ファイルのアクセス権を変更する
file
のアクセス権を
mode
により変更する。変更方法をシンボルで表現するか、もしくは変更後の
アクセス権を表すビットパターンを 8 進数で表現したもののいずれかを
使うことができる。
シンボルモードでアクセス権を変更する場合の引数の書式は
`[ugoa...][[+-=][rwxXstugo...]...][,...]' である。
シンボルモードで引数にアクセス権の変更を複数指定する場合にはコンマで区切る。
シンボルモードでアクセス権を変更するそれぞれの表現は 0 個もしくは複数の文字 `ugoa' で始まる;
これらがファイルに対するどのユーザーのアクセス権を変更するかを決める: ファイルの所有者 (u)、
ファイルと同じグループに属しているが所有者ではない (訳注: 以後グループと表記) (g)、
所有者でもなく、そのファイルと同じグループにも属していない (訳注: 以後その他と表記) (o)、
もしくは全ユーザー (a) を表している。つまり `a' は `ugo' と同じである。
もしこれらのいずれも指定されない場合、`a' が指定されたのと同じ結果となるが、umask に設定された
ビット位置は変化しない。
`+' 演算子は各々のファイルの現状のアクセス権に、選択したアクセス権を加える; `-'
は削除する; そして `=' は指定したアクセス権だけがそのファイルのアクセス権となる。
文字 `rwxXstugo' は影響を与えるユーザーに対する新しいアクセス権を選択する: 読取り (r)、
書き込み (w)、実行 (またはディレクトリに対するアクセス) (x)、ファイルがディレクトリかもしくは
あるユーザーに対してすでに実行アクセス権が設定されている場合のみ実行 (X)、実行時にユーザー
もしくはグループ IDを設定する (s)、sticky bit (t)、そのファイルの所有者での現在のアクセス権
は (u)、そのファイルのグループでの現在のアクセス権は (g)、そのファイルのその他のユーザーでの現在
のアクセス権は (o) で表される。
(従って、`chmod g-s file' は set-group-ID (sgid) ビットを削除する。
`chmod ug+s file' は suid そして sgid ビットの両方を設定するが、
`chmod o+s file' は何もしない。)
POSIX では `sticky bit' について記述していない。
その名前は本来の意味から来ている:
プログラムコードをスワップ上に維持する。
最近は、ディレクトリに設定されている場合、ファイルの所有者とディレクトリの所有者だけが
そのディレクトリからファイルを削除できることを意味する。
(全ユーザーが書き込みアクセス権を持つ /tmp のようなディレクトリでこれはごく普通に使われている。)
chmod
コマンドがシンボリックリンクのアクセス権を変更することは決してない。なぜなら、
chmod
システムコールはシンボリックリンクのアクセス権を変更することができないからである。
シンボリックリンクのアクセス権は決して使われることがないため、このことは問題ではない。
しかし、
chmod
コマンドは引数にシンボリックリンクが指定された場合、各々についてそれが指しているファイルの
アクセス権を変更する。それに対して、
chmod
コマンドは再帰的にディレクトリを移動しながら処理している時に見つけたシンボリックリンク
は無視する。
-R
-c, --changes
file
それぞれについての動作を詳細に表示する。
-f, --silent, --quiet
-v, --verbose
file
について変更した、もしくはしなかったという動作を詳細に表示する。
-R, --recursive
--reference=file
--help
--version
--
特別なアクセス権
同じ UID のユーザー (u+)
同じグループ (g+)
その他のユーザー (o+)
/usr/src/linux/Documentation/mandatory.txt
ファイルを参照。