chmod -uは何をしますか?

chmod -uは何をしますか?

誤ってこのプログラムを実行しましたが、chmod -u filename私が持っていたすべての権限が削除されましたfilename

マニュアルページには引用オプションはありません-u。実験の結果、すべての権限を削除したのではなく、読み取りおよび実行権限のみを削除し、書き込み権限は残すという結論に達しました。

それでは、これが正確に何をするのでしょうか?


上記の結論は間違っていました。今、私はすべてのカテゴリから所有者所有権を削除することだと思います。


私の考えでは、動作が似ていることをa=u除いて、置き換えて-削除=できるaという点だけが異なりますa+x

答え1

これはオプションではありませんが、権限を指定する標準的な(しかし一般的ではない)方法です。これは、すべてのユーザーに対して-ファイル所有者()に関連付けられている権限を削除()することを意味します(前またはなし)。これuugoはいマニュアルページに文書化されています。

GNU chmod のマニュアルページ次のように記録してください。

シンボルパターンは、セットにゼロ個以上の文字があるか、[ugoa...][[-+=][perms...]...]セットに単一文字がある形式を持ちます。permsrwxXstウゴ

それから

次の1つ以上の文字の代わりにugo文字の1つを指定できます。ファイルを所有しているユーザーに権限を付与する()u、ファイルグループに属する他のユーザーに権限を付与する()、および両方gに権限を付与する上記の2つのカテゴリのユーザー権限(o

したがって、現在すべての人にアクティブなすべての権限()を-u削除()することを意味します(と同じですが、現在umaskを尊重します)。これは一般的にはあまり役に立ちませんが、再帰的に作業するときに所有者の権限を他の人にコピーするのと同様の状況がある可能性があります。-ua-uchmod +u


それPOSIXにも文書化されています。しかし、定義はより曖昧です。特権仕様は広くwho[+-=]perms(または数字で)、これらの仕様の効果はより詳細に指定されます。

永続コピー記号ugおよびはo、それぞれユーザー、グループ、およびファイルモードビットの他の部分に関連する現在の権限を表す必要があります。このセクションの残りの部分については、permビターミナルpermと文法をご覧ください。permcopy

それから

-

...もしWHO指定されていない場合、所有者、グループ、およびその他の権限に対するpermで表されるファイルモードビットは、呼び出しプロセスのファイルモード生成マスク内の対応するビットを除いて消去されます。

答え2

答えはやや似ています。https://unix.stackexchange.com/a/429424/255251

chmod -u file_name

すべての権限が削除されるわけではありませんが、umask価値が考慮されます。

umask
0022
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
chmod -u file
chmod: file: new permissions are ----w--w-, not ---------
ls -l file
-----w--w- 1 user user 4 Feb 25 15:17 file

次に、umaskの値を変更します。

umask 777
chmod 777 file
chmod -u file
chmod: file: new permissions are rwxrwxrwx, not ---------
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file

関連情報