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 他のユーザーによる実行または検索を許可します。
注:
  1. モードを数値で指定すると、拡張子 ACL が無効になります。詳細については、「オペレーティング・システムおよびデバイスの管理」の『アクセス制御リスト』を参照してください。
  2. グループ権限を記号で変更すると、 AIXC ACL エントリーにも影響があります。ACL 内の、ファイルを所有するグループに等しいグループのエントリーには、モードから除去された許可は与えられません。 詳細については、「オペレーティング・システムおよびデバイスの管理」の『アクセス制御リスト』を参照してください。
  3. 複数の記号モードをコンマで区切って指定できます。処理は左から右に指定された順に実行されます。
  4. ディレクトリーから set-group-ID-on-execution 許可を除去する場合は、モードを記号で指定するか、ゼロから始まる明示的な 4 文字の 8 進数 (例えば、0755) を使用する必要があります。
  5. ファイルシステム・オブジェクトに関連する非 AIXC の ACL に対して、 モード・ビットでの基本アクセス権ビット (rwxrwxrwx) の変更操作をもたらすような要求を記号または数値で行うことは、 現在の ACL を単なるモード・ビットと置き換える原因となります。
  6. save-text 属性を設定できるのは root ユーザーだけですが、標準ユーザーであっても削除はできます。

終了状況

このコマンドは次の終了値を戻します。

項目 説明
0 コマンドは正常に実行され、要求された変更はすべて完了しました。
>0 エラーが発生しました。

セキュリティー

アクセス制御

このプログラムを、トラステッド・コンピューティング・ベースに通常のユーザー・プログラムとしてインストールしてください。

ファイルのモードを変更できるのは、そのファイルのオーナーまたは root ユーザーだけです。

RBAC ユーザーと Trusted AIX® ユーザーへの注意: このコマンドは特権命令を実行できます。特権命令を実行できるのは特権ユーザーのみです。 権限および特権の詳細情報については、「セキュリティー」の『特権コマンド・データベース』を参照してください。このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。

  1. 複数のファイルに許可タイプを追加するには、 次のように入力します。
    chmod  g+w  chap1  chap2
    これにより、ファイル chap1chap2 に、 グループ・メンバーの書き込み許可が追加されます。
  2. 複数の許可を一度に変更するには、以下のように入力します。
    chmod  go-w+x  mydir
    これにより、グループ・メンバーと他のユーザーに対しては、mydir 内のファイルの作成許可または削除許可が禁止され (go-w)、パス名での mydir の検索またはその使用が可能になります (go+x)。これは、以下のコマンド・シーケンスと同等です。
    chmod  g-w  mydir
    chmod  o-w  mydir
    chmod  g+x  mydir
    chmod  o+x  mydir
  3. オーナーだけがコマンドとしてシェル・プロシージャーを使用できるようにするには、 以下のように入力します。
    chmod  u=rwx,go= cmd
    これにより、ファイルを所有するユーザーに、読み取り、書き込み、および実行許可が与えられます (u=rwx)。また、グループや、その他のユーザーは、いかなる方法でもファイル cmd へのアクセスができなくなります (go=)。

    シェル・コマンド・ファイル cmd の実行許可がある場合、以下のように入力して実行できます。

    cmd

    注: PATH シェル変数に応じて、cmd ファイルに絶対パスを指定しなければならない場合もあります。

  4. Set-ID モードを使用するには、以下のように入力します。
    chmod  ug+s  cmd
    cmd コマンドを実行すると、実効ユーザー ID と実効グループ ID が、cmd ファイルを所有するユーザーに設定されます。cmd コマンドを実行する子プロセスと関連付けられた実効 ID だけが変更されます。シェル・セッションの実効 ID は変更されません。

    この機能は、制限付きファイルへのアクセス権をユーザーに許可するときに使用します。cmd プログラムの Set-User-ID モードが使用可能になっており、そのオーナーが dbms というユーザーであるとします。ユーザー dbms は実際には人ではなく、データベース管理システムと関連している場合もあります。ユーザー betty は、dbms のデータ・ファイルにはアクセスできません。しかし、そのユーザーは cmd を実行する許可を持っています。そのユーザーが cmd コマンドを実行すると、その実効 ID は一時的に dbms に変更され、cmd プログラムはユーザー dbms の所有するデータ・ファイルにアクセスすることが可能になります。

    このようにして、ユーザー bettycmd コマンドを使ってデータ・ファイルにアクセスできます。 しかし、このユーザーが標準シェル・コマンドを使用して間違ってそれらのデータ・ファイルに損傷を与えるようなことはありません。

  5. chmod コマンドの絶対モード・フォーマットを使用するには、以下のように入力します。
    chmod  644  text
    これにより、オーナーの読み取り/書き込み許可が設定されます。また、読み取り専用モードがグループと他のユーザーに対して設定されます。このコマンドは、ファイルに関連する可能性のあるすべての拡張 ACL も除去します。
  6. 以下のようなツリー構造の場合に、 ディレクトリーを下方に向かって再帰的に処理し、 ファイルとディレクトリーの許可を変更するとします。

    ./dir1/dir2/file1

    ./dir1/dir2/file2

    ./dir1/file1

    以下のコマンド・シーケンスを入力します。

    chmod -R 777 f*
    このコマンドにより、./dir1/file1 の許可が変更されます。

    ただし、以下のようなツリー構造の場合は異なります。

    ./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 コマンドが入っています。