Linux 顯示我有寫入權限,但無法刪除該檔案。我已經檢查過並且我對每個父目錄都有執行權限。知道這是怎麼發生的嗎?
deployer@my-web:/usr/local/bin$ ls -la
total 10656
drwxr-xr-x 2 root root 4096 Feb 11 21:25 .
drwxr-xr-x 10 root root 4096 Feb 3 13:21 ..
-rwxr-xr-x 1 deployer deployer 1836198 Mar 18 19:05 composer
deployer@my-web:/usr/local/bin$ rm composer
rm: cannot remove ‘composer’: Permission denied
答案1
簡而言之,您不僅需要檔案的權限,還需要保存該檔案的目錄的權限。在經典 UNIX 中,目錄實際上是一種特殊的檔案 - 保存指向其中檔案的指標。這就是為什麼您需要對目錄進行寫入(w)存取。
在這種情況下,您需要變更(或讓特權擁有者變更)/usr/local/bin 上的權限。
答案2
目錄的權限與檔案的權限並不完全相同。
寫入權限允許使用者建立、刪除或修改任何檔案或子目錄,即使該檔案或子目錄由其他使用者擁有。
對於目錄,由於使用相同的命令,因此沒有太大變化。但是,由於目錄通常包含也需要分配給新使用者或群組的文件,因此我們使用 '-R' 標誌,代表 '遞迴的' - 換句話說,所有子目錄及其檔案:
chown -R user:group dirname