スポンサーリンク

CHMOD(1) FreeBSD 一般コマンドマニュアル CHMOD(1)

名称

chmod − ファイルのモードを変更する

書式

chmod [−fhv] [−R [−H | −L | −P]] mode file ...

解説

chmod は指定されたファイルのモードを mode で指定したものに変更します。

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

       −f

chmodfile のモードを変更できなかったときに、診断メッセージを 表示しませんし、失敗を示す終了値の変更を行いません。

−H
−R
オプションが指定されていれば、引数がシンボリックリンクのとき、 それをたどって変更します。 (ディレクトリツリー探索中に見つかった シンボリックリンクは、デフォルトではそれ以上追跡しません)

−h
ファイルがシンボリックリンクの場合、リンクの先のファイルの代りに リンク自身のモードを変更します。

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

−P
−R
オプションが指定されていても、どのシンボリックリンクもたどりま せん。これがデフォルトです。

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

−v
chmod
を冗長にし、モードが変更されるファイルを表示させます。 −v が複数回指定された場合、ファイルの旧モードと新モードが、 8 進数お よびシンボルにて表示されます。

−H, −L, −P オプションは、 −R オプションが指定されていなければ無視されま す。また、これらが複数指定されると最後に指定したものが有効になります。

ファイルのモードの変更はそのファイルの所有者とスーパユーザだけにしか許さ れていません。

診断

ユーティリティ chmod は、成功すると 0 で、エラーがあった場合は >0 で終了 します。

モード

モードには、数値を用いた絶対値指定と、シンボルによる指定があります。数値 指定では、以下の値を ‘‘or’’ で組み合わせた 8 進数を用います:

             4000

(setuid ビット) このビットがセットされている実行可能ファイ ルは、ファイルを所有するユーザ ID に実効ユーザ ID を設定さ れて実行されます。このビットをセットされているディレクトリ は、その中で作成される全てのファイルおよびディレクトリの所 有者をディレクトリの所有者に設定することを強制し、作成する プロセスのユーザ ID は無関係となります。これは、ディレクト リが存在するファイルシステムがこの機能をサポートしている場 合に限られます: chmod(2)mount(8)suiddir オプション を参照してください。
2000
(setgid ビット) このビットがセットされている実行可能ファイ ルは、ファイルを所有するグループ ID に実効グループ ID を設 定されて実行されます。
1000
(スティッキビット)。 chmod(2)sticky(8) を参照してくださ い。
0400
所有者の読み込みを許可。
0200
所有者の書き込みを許可。
0100
ファイルの場合、所有者の実行を許可。ディレクトリの場合、所 有者の検索を許可。
0040
グループのメンバの読み込みを許可。
0020
グループのメンバの書き込みを許可。
0010
ファイルの場合、グループのメンバの実行を許可。ディレクトリ の場合、グループのメンバの検索を許可。
0004
他者の読み込みを許可。
0002
他者の書き込みを許可。
0001
ファイルの場合、他者の実行を許可。ディレクトリの場合、他者 の検索を許可。

例えば、所有者に読み込み・書き込み・実行を許可し、グループのメンバに読み 込み・実行を許可し、他者に読み込み・実行を許可し、 set-uid と set-gid を 指定しない絶対値指定のモードは、 755 (400+200+100+040+010+004+001) となり ます。

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

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

who シンボルの ‘‘u’’, ‘‘g’’, ‘‘o’’ はそれぞれユーザ、グループ、それ以外に 相当します。‘‘a’’ シンボルは ‘‘ugo’’ を指定した場合と同じになります。

perm シンボルはモードの各ビットを以下のように表現します。

             r

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

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

+
perm
値が指定されなければ、‘‘+’’ は何の作用もありません。 who シン ボルが指定されていなければ、 perm 値はそれぞれの who シンボルの対応 するビットに作用し、それを umask でマスクしたビットがセットされま す。 who シンボルが指定されていれば、その perm 値が設定されます。


perm
値が指定されていなければ、‘‘−’’ は何の作用もありません。 who シンボルが指定されていなければ、 perm 値はそれぞれの who シンボルの 対応するビットに作用し、それを umask でマスクしたビットがクリアされ ます。 who シンボルが指定されていれば、その perm 値がクリアされま す。

=
who
シンボルで指定されたモードビットがクリアされます。who シンボル が指定されていなければ、所有者、グループ、その他の各モードビットが クリアされます。 who シンボルが指定されていなければ、 perm で指定し たビットが、所有者、グループ、その他のそれぞれを umask でマスクした ものだけ設定されます。 who シンボルと perm が指定されていれば、その 値がそのまま設定されます。

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

所有者とグループ以外の ‘‘o’’ のみに対して、‘‘s’’ や ‘‘t’’ の組み合わせの perm 値が指定されても無視されます。

使用例

       644

ファイルを誰にでも読めるようにして、ファイルの所有者のみ書 き込み可能にします。

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

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

+X
誰かが実行/検索可能なファイルやディレクトリならば、すべて のユーザが実行/検索できるファイルやディレクトリとします。

755
u=rwx,go=rx
u=rwx,go=u-w
誰にでも読み込みと実行ができて、所有者のみ書き込み可能にな るようにします。

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

g=u-w
グループビットをユーザビットと同じにしますが、グループの書 き込みは禁止します。

バグ

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

互換性

−v オプションは非標準であり、スクリプト中の使用は非推奨です。

関連項目

chflags(1), install(1), setfacl(1), chmod(2), stat(2), umask(2), fts(3), setmode(3), symlink(7), chown(8), mount(8), sticky(8)

規格

chmod ユーティリティは、規格にない perm シンボルの ‘‘t’’ を除いては IEEE Std 1003.2 (‘‘POSIX.2’’) 互換になるように作られています。

歴史

chmod コマンドは Version 1 AT&T UNIX から導入されました。

FreeBSD 10.0 March 31, 1994 FreeBSD 10.0

スポンサーリンク