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部分は他のユーザーに対して無視されることになります。

したがって、典型的なumask022 の場合、chmod権限を設定する対象を指定しないコマンドは、グループおよび他のユーザーの書き込みビットに対する指定された変更を無視することになります。

を無視してすべてのビットを設定するにはumask、以下を指定する必要があります。誰が設定したい項目:

chmod a+rwx file

あるいはもっと明確に言えば、

chmod ugo+rwx file

ugo(または、ユーザー、グループ、その他の適切なのサブセット)。

記号による権限の代わりに数値による権限を指定することも可能です。UNIX の権限とファイルの種類を理解する詳細については。

umaskマスクの動作は、次の場合にも適用されることに注意してください。クリアビットは、驚くべき結果を生み出す可能性があります。 は、chmod -w fileによって設定される書き込みビットのみをクリアしますchmod +w file。 022 の典型的な例を続けると、これは、 がグループまたは他の書き込みビットに触れず、すでに設定されている場合は設定されたままにするumaskことを意味します。 (GNU ' は、これについて警告します。)chmod -wcoreutilschmod

関連情報