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指定する必要があります。WHO次のように設定したいと思います。

chmod a+rwx file

または、より具体的に言えば、

chmod ugo+rwx file

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

シンボリック権限の代わりに数値権限を指定することもできます。UNIXの権限とファイルタイプの理解もっと学ぶ。

ブロック動作はumask次にも適用されます。弁済ビット、これは驚くべき結果をもたらすことができます。chmod -w file!に設定された書き込みビットのみがクリアされます。chmod +w file通常のumask022を続けると、これはchmod -wこのグループまたは他のグループへの書き込みビットは触れず、すでに存在する場合はそのまま残ることを意味します。 (GNUはcoreutilsこれに役立つchmod警告を提供します。)

おすすめ記事