為什麼我無法在 linux 中使用 chmod 向使用者授予寫入權限?

為什麼我無法在 linux 中使用 chmod 向使用者授予寫入權限?

目前的檔案權限如下所示:

$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file

現在我嘗試使用以下方法授予寫入權限chmod

$ chmod +x+r+w file

之後,檔案權限仍然是這樣的:

$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file

寫入權限不授予其他人。為什麼會發生這種情況?

答案1

當你跑步時chmod +x+r+w file所有位都已設置,除了那些被您屏蔽的位umask。您umask可能(至少)掩蓋了其他使用者的寫入位,因此該+w部分最終會被他們忽略。

因此,對於典型umask的 022,任何chmod未指定應為誰設定權限的命令最終都會忽略對該群組和其他人的寫入位元的任何指定變更。

要設定所有位,忽略umask,您需要指定世界衛生組織你想將它們設定為:

chmod a+rwx file

或者更明確地說,

chmod ugo+rwx file

(或任何ugo適當的子集,用於使用者、群組和/或其他人)。

也可以指定數字權限而不是符號權限;看了解 UNIX 權限和檔案類型了解詳情。

請注意,umask屏蔽行為也適用於以下情況:清算位,這可能會產生令人驚訝的結果:只會清除由!chmod -w file設定的寫入位。chmod +w file繼續典型umask的 022,這意味著chmod -w不會觸及該組或其他人的寫入位,如果它們已經存在,則將其保留。 (GNUcoreutils對此chmod提出了有益的警告。)

相關內容