目前的檔案權限如下所示:
$ 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
提出了有益的警告。)