chmod コマンド
目的
ファイル・モードを変更します。
構文
ファイル・モードを記号で変更する
chmod [ -R ] [ -h ] [ -f ] [ [ u ] [ g ] [ o ] | [ a ] ] { { - | + | = } [ r ] [ w ] [ x ] [ X ] [ s ] [ t ] } { File ... | Directory ... }
ファイル・モードを数値で変更する
chmod [ -R ] [ -h ] [ -f ] PermissionCode { File ... | Directory ... }
説明
chmod コマンドは、指定されたファイルまたはディレクトリーのモード・ビットと拡張アクセス制御リスト (ACL) を変更します。モードは、記号または数値 (絶対モード) で定義します。
シンボリック・リンクがあった場合に、-h フラグを指定していなければ、chmod コマンドはリンクそのもののモードではなく、リンクが指し示すファイルまたはディレクトリーのモードを変更します。-h フラグを指定すると、chmod コマンドはこのモードを変更しなくなります。
-h フラグと -R フラグを指定した場合、chmod コマンドは指定されたディレクトリーを再帰的に下降し、シンボリック・リンクがあっても、リンクが指し示すファイルまたはディレクトリーのモードを変更しません。
フラグ
項目 | 説明 |
---|---|
-f | 無効な許可と使用状況ステートメントを除き、すべてのエラー・メッセージを表示しないようにします。 |
-h | 発見されたシンボリック・リンクが指し示すファイルまたはディレクトリーのモード変更を抑制します。
注: シンボリック・リンクにはモード・ビットを設定できないので、この動作は chgrp コマンドおよび chown コマンドの -h フラグの動作とはやや異なります。 |
-R | パターン File...|Directory... の指定に従ってディレクトリーのみを再帰的に下降します。
-R フラグは、指定したパターンに一致する各ディレクトリーとすべてのファイルのファイル・モード・ビットを変更します。例 6 を参照してください。
シンボリック・リンクがあり、そのリンクがディレクトリーを指している場合、そのディレクトリーのファイル・モード・ビットは変更されますが、ディレクトリーはそれ以上変更されません。 |
記号モード
記号フォーマットでモードを指定するには、以下の 3 組のフラグを指定しなければなりません。
注: フラグとフラグをスペースで区切らないでください。
1 組目のフラグは指定した許可を与えるユーザーまたは禁止するユーザーを指定します。以下のようなフラグがあります。
項目 | 説明 |
---|---|
u | ファイルのオーナー。 |
g | グループと、ファイルのグループに関連する拡張 ACL エントリー。 |
o | 他のすべてのユーザー。 |
a | ユーザー、グループ、他のすべてのユーザー。a フラグは、ugo フラグを同時に指定するのと同じ効果があります。これらのフラグを指定しない場合、デフォルトの a フラグが設定され、ファイル作成マスク (umask) が適用されます。 |
2 組目のフラグは許可を除去するか、適用するか、または設定するかを指定します。以下のようなフラグがあります。
項目 | 説明 |
---|---|
- | 指定した許可を除去します。 |
+ | 指定した許可を適用します。 |
= | 選択した許可フィールドをクリアし、それを指定した許可に設定します。= の後ろに許可を指定しない場合は、chmod コマンドは、選択したフィールドからすべての許可を除去します。 |
3 組目のフラグは除去、適用、または設定する許可を指定します。以下のようなフラグがあります。
項目 | 説明 |
---|---|
r | 読み取り許可。 |
w | 書き込み許可。 |
x | ファイルの実行許可 (ディレクトリーの場合は検索許可)。 |
X | 現行 (未変更) モード・ビットにユーザー、グループ、または他の実行ビットが少なくとも 1 つ設定されている場合は、ファイルの実行許可。
File パラメーターを指定し、現行モード・ビットに実行ビットが設定されていない場合は、X フラグは無視されます。
ディレクトリーの場合は検索許可。 |
s | u フラグを指定または暗黙指定している場合は、Set-User-ID-On 実行許可。g フラグを指定または暗黙指定している場合は、Set-Group-ID-On 実行許可。 |
t | ディレクトリーの場合は、指定したディレクトリー内のファイルをリンクしたり、リンク解除できるのは、ファイル・オーナーだけであることを示します。ファイルの場合は、save-text 属性を設定します。 |
数値 (絶対) モード
chmod コマンドでは、モードの設定に 8 進表記を使用できます。数値モードは、以下の 1 つ以上の値の和です。
項目 | 説明 |
---|---|
4000 | 実行時にユーザー ID を設定します。 |
2000 | 実行時にグループ ID を設定します。 |
1000 | ディレクトリーに対してリンク許可を設定、またはファイルの save-text 属性を設定します。 |
0400 | オーナーによる読み取りを許可します。 |
0200 | オーナーによる書き込みを許可します。 |
0100 | オーナーによる実行または検索を許可します。 |
0040 | グループによる読み取りを許可します。 |
0020 | グループによる書き込みを許可します。 |
0010 | グループによる実行または検索を許可します。 |
0004 | 他のユーザーによる読み取りを許可します。 |
0002 | 他のユーザーによる書き込みを許可します。 |
0001 | 他のユーザーによる実行または検索を許可します。 |
注:
- モードを数値で指定すると、拡張子 ACL が無効になります。詳細については、「オペレーティング・システムおよびデバイスの管理」の『アクセス制御リスト』を参照してください。
- グループ権限を記号で変更すると、 AIXC ACL エントリーにも影響があります。ACL 内の、ファイルを所有するグループに等しいグループのエントリーには、モードから除去された許可は与えられません。 詳細については、「オペレーティング・システムおよびデバイスの管理」の『アクセス制御リスト』を参照してください。
- 複数の記号モードをコンマで区切って指定できます。処理は左から右に指定された順に実行されます。
- ディレクトリーから set-group-ID-on-execution 許可を除去する場合は、モードを記号で指定するか、ゼロから始まる明示的な 4 文字の 8 進数 (例えば、0755) を使用する必要があります。
- ファイルシステム・オブジェクトに関連する非 AIXC の ACL に対して、 モード・ビットでの基本アクセス権ビット (rwxrwxrwx) の変更操作をもたらすような要求を記号または数値で行うことは、 現在の ACL を単なるモード・ビットと置き換える原因となります。
- save-text 属性を設定できるのは root ユーザーだけですが、標準ユーザーであっても削除はできます。
終了状況
このコマンドは次の終了値を戻します。
項目 | 説明 |
---|---|
0 | コマンドは正常に実行され、要求された変更はすべて完了しました。 |
>0 | エラーが発生しました。 |
セキュリティー
アクセス制御
このプログラムを、トラステッド・コンピューティング・ベースに通常のユーザー・プログラムとしてインストールしてください。
ファイルのモードを変更できるのは、そのファイルのオーナーまたは root ユーザーだけです。
RBAC ユーザーと Trusted AIX® ユーザーへの注意: このコマンドは特権命令を実行できます。特権命令を実行できるのは特権ユーザーのみです。 権限および特権の詳細情報については、「セキュリティー」の『特権コマンド・データベース』を参照してください。このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。
例
- 複数のファイルに許可タイプを追加するには、
次のように入力します。
これにより、ファイル chap1 と chap2 に、 グループ・メンバーの書き込み許可が追加されます。chmod g+w chap1 chap2
- 複数の許可を一度に変更するには、以下のように入力します。
これにより、グループ・メンバーと他のユーザーに対しては、mydir 内のファイルの作成許可または削除許可が禁止され (go-w)、パス名での mydir の検索またはその使用が可能になります (go+x)。これは、以下のコマンド・シーケンスと同等です。chmod go-w+x mydir
chmod g-w mydir chmod o-w mydir chmod g+x mydir chmod o+x mydir
- オーナーだけがコマンドとしてシェル・プロシージャーを使用できるようにするには、
以下のように入力します。
これにより、ファイルを所有するユーザーに、読み取り、書き込み、および実行許可が与えられます (u=rwx)。また、グループや、その他のユーザーは、いかなる方法でもファイル cmd へのアクセスができなくなります (go=)。chmod u=rwx,go= cmd
シェル・コマンド・ファイル cmd の実行許可がある場合、以下のように入力して実行できます。
cmd
注: PATH シェル変数に応じて、cmd ファイルに絶対パスを指定しなければならない場合もあります。
- Set-ID モードを使用するには、以下のように入力します。
cmd コマンドを実行すると、実効ユーザー ID と実効グループ ID が、cmd ファイルを所有するユーザーに設定されます。cmd コマンドを実行する子プロセスと関連付けられた実効 ID だけが変更されます。シェル・セッションの実効 ID は変更されません。chmod ug+s cmd
この機能は、制限付きファイルへのアクセス権をユーザーに許可するときに使用します。cmd プログラムの Set-User-ID モードが使用可能になっており、そのオーナーが dbms というユーザーであるとします。ユーザー dbms は実際には人ではなく、データベース管理システムと関連している場合もあります。ユーザー betty は、dbms のデータ・ファイルにはアクセスできません。しかし、そのユーザーは cmd を実行する許可を持っています。そのユーザーが cmd コマンドを実行すると、その実効 ID は一時的に dbms に変更され、cmd プログラムはユーザー dbms の所有するデータ・ファイルにアクセスすることが可能になります。
このようにして、ユーザー betty は cmd コマンドを使ってデータ・ファイルにアクセスできます。 しかし、このユーザーが標準シェル・コマンドを使用して間違ってそれらのデータ・ファイルに損傷を与えるようなことはありません。
- chmod コマンドの絶対モード・フォーマットを使用するには、以下のように入力します。
これにより、オーナーの読み取り/書き込み許可が設定されます。また、読み取り専用モードがグループと他のユーザーに対して設定されます。このコマンドは、ファイルに関連する可能性のあるすべての拡張 ACL も除去します。chmod 644 text
- 以下のようなツリー構造の場合に、
ディレクトリーを下方に向かって再帰的に処理し、
ファイルとディレクトリーの許可を変更するとします。
./dir1/dir2/file1
./dir1/dir2/file2
./dir1/file1
以下のコマンド・シーケンスを入力します。
このコマンドにより、./dir1/file1 の許可が変更されます。chmod -R 777 f*
ただし、以下のようなツリー構造の場合は異なります。
./dir1/fdir2/file1
./dir1/fdir2/file2
./dir1/file3
以下のコマンド・シーケンスを入力します。
以下の許可が変更されます。chmod -R 777 f*
./dir1/fdir2
./dir1/fdir2/file1
./dir1/fdir2/file2
./dir1/file3
ファイル
項目 | 説明 |
---|---|
/usr/bin/chmod | chmod コマンドが入っています。 |