CHMOD(1)

名称
chmod - ファイルのモードを変更する

書式
chmod [ -R [-H | -L | -P]] [-h] mode file ...

解説
chmod ユーティリティは、指定されたファイルのモードを mode で指定したものに変更します。

オプションとして以下のものがあります:

-H  -R オプションが指定されていれば、コマンドライン引数がシンボリックリンクのとき、 それをたどって変更します。 (ツリー内をたどっている最中に見つけたシンボリックリンクの先は調べません)

-L  -R オプションが指定されていれば、すべてのシンボリックリンクをたどり、 リンク先のファイルを変更します。

-P  -R オプションが指定されていても、どのシンボリックリンクもたどりません。

-R  そのファイル自身だけでなく、そのファイルをルートとするディレクトリ階層を 再帰的に検索してモードを変更します。

-h  file がシンボリックリンクであれば、そのリンクのモードを変更します。

オプション -h が指定されていないと、 -H や -L オプションが指定されない限り、シンボリックリンクに対する chmod の実行は常に成功し、何も変わりません。 -H, -L, -P オプションは、 -R オプションが指定されていなければ無視されます。さらに、 これらのオプションはお互いの効果を上書きするため、これらが複数指定されると、 コマンドの動作は最後に指定されたもので決まります。

ファイルのモードの変更が許されるのは、そのファイルの所有者と スーパユーザだけです。

chmod ユーティリティは正常終了時には 0 を返し、エラーが起こった時には 0 より大き な値を返します。

モード
モードの指定には、数値を用いた絶対的な指定と、シンボルを用いた指定の 2 種類 があります。数値による指定では、以下の 8 進数の値を or-演算 で組み合わせたものを用います:

4000
    実行時 setuid (set-user-ID-on-execution) ビット。
2000
    実行時 setgid (set-group-ID-on-execution) ビット。
1000
    sitcky (スティッキ) ビット。 chmod(2) 参照。
0400
    所有者の読込み許可。
0200
    所有者の書込み許可。
0100
    所有者の実行 (ディレクトリの場合はファイル名の検索) 許可。
0070
    グループに対する読込み、書込み、実行 (検索) 許可。
0007
    所有者とグループ以外のユーザに対する読込み、書込み、実行 (検索) 許可。

グループ及びその他のユーザのための読込み、書込み、実行 (検索) 許可の値は 所有者の場合と同様なエンコードを行います。

シンボルによる指定は以下の文法に従います:

    mode         ::= clause [, clause ...]
    clause       ::= [who ...] [action ...] last_action
    action       ::= op [perm ...]
    last_action  ::= op [perm ...]
    who          ::= a | u | g | o
    op           ::= + | - | =
    perm         ::= r | s | t | w | x | X | u | g | o

who シンボルの ``u'', ``g'', ``o'' はそれぞれユーザ、グループ、それ以外に 相当します。 who シンボルの ``a'' は ``ugo'' と指定することと同じです。

perm シンボルは以下のようにモードの各部を表現します:

r   読込み許可ビット
s   setuid および setgid ビット
t   sticky ビット
w   書込み許可ビット
x   実行/検索 許可ビット
X   対象が、ディレクトリであるか、変更前のモードの誰かの実行/検索許可ビットが 立っている場合に実行/検索許可ビットがセットされます。 perm シンボルでの ``X'' の指定は、 op シンボルを ``+'' で連結する時のみ意味があり、他の場合は無視されます。
u   オリジナルファイルのモードのうちのユーザ許可ビット
g   オリジナルファイルのモードのうちのグループ許可ビット
o   オリジナルファイルのモードのうちの、ユーザ、グループ以外の許可ビット

op シンボルの働きは以下のようになります:

+   perm の値が指定されない場合は ``+'' は何の影響も与えません。 who の値が指定されない場合は、 perm で指定した各許可ビットを umask でマスクしたものがセットされます。 他の場合は指定した who と perm で表現されるモードビットがセットされます。

-   perm の値が指定されない場合は ``-'' は何の影響も与えません。 who の値が指定されない場合は、 所有者、グループ、それ以外のユーザの それぞれの perm ビットはクリアされます。他の場合は指定した who と perm で表現されるモードビットがクリアされます。

=   who で指定したモードビットがクリアされるます。もし who が指定されなければ所有者とグループとその他のモードビットがクリアされます。 そしてもし who の値が指定されなければ、 perm で指定した各許可ビットを umask でマスクしたものがセットされます。 他の場合は指定した who と perm で表現されるモードビットがセットされます。

各 clause では、モードビットを操作するためのオペレーションを 1 つ以上 記述しなければなりません。そして各オペレーションは記述した順番で適用されます。

操作が ``o'' のパーミッションだけの場合には、 perm シンボルの ``s'' や ``t'' の組合せは無視されます。

使用例
644 ファイルを誰にでも読めるようにし、書き込むことができるのはファイルの 所有者のみにします。

go-w
    ファイルの所有者以外の書込み許可を禁止します。

=rw,+X
    umask(2) でマスクされていないビットの読み書きを許可しますが、 実行許可は現在設定されているものを保持します。

+X  すでに誰かが実行/検索のできるファイルやディレクトリならば、 誰でも実行/検索できるファイルやディレクトリとします。

755
u=rwx,go=rx
u=rwx,go=u-w
    誰でも読込みと実行ができるが、書込みはオーナーだけとします。

go= グループやその他のユーザにいかなる許可も与えません。

g=u-w
    グループビットをユーザビットと同じにしますが、グループの書込み許可 ビットはクリアします。

バグ
naughty bit のための perm オプションはありません。

関連項目
install(1), chmod(2), stat(2), umask(2), fts(3), setmode(3), symlink(7), chown(8)

規格
chmod ユーティリティは、 perm シンボルの “t” と “X” を除いては p1003.2 互換になるように作ってあるつもりです。 この 2 つは規格には含まれていません。