現在のファイル権限は次のとおりです。
$ 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
指定する必要があります。WHO次のように設定したいと思います。
chmod a+rwx file
または、より具体的に言えば、
chmod ugo+rwx file
(またはugo
ユーザー、グループ、および/またはその他のための適切なサブセット)。
シンボリック権限の代わりに数値権限を指定することもできます。UNIXの権限とファイルタイプの理解もっと学ぶ。
ブロック動作はumask
次にも適用されます。弁済ビット、これは驚くべき結果をもたらすことができます。chmod -w file
!に設定された書き込みビットのみがクリアされます。chmod +w file
通常のumask
022を続けると、これはchmod -w
このグループまたは他のグループへの書き込みビットは触れず、すでに存在する場合はそのまま残ることを意味します。 (GNUはcoreutils
これに役立つchmod
警告を提供します。)