ファイル・モードを変更する。
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 コマンドは指定されたディレクトリーを再帰的に下降し、シンボリック・リンクがあっても、リンクが指し示すファイルまたはディレクトリーのモードを変更しません。
記号フォーマットでモードを指定するには、以下の 3 組のフラグを指定しなければなりません。
1 組目のフラグは指定した許可を与えるユーザーまたは禁止するユーザーを指定します。以下のようなフラグがあります。
| u | ファイル所有者。 |
| g | グループと、ファイルのグループに関連する拡張 ACL エントリー。 |
| o | 他のすべてのユーザー。 |
| a | ユーザー、グループ、他のすべてのユーザー。a フラグは、ugo フラグを同時に指定するのと同じ効果があります。これらのフラグを指定しない場合、デフォルトの a フラグが設定され、ファイル作成マスク (umask) が適用されます。 |
2 組目のフラグは許可を除去するか、適用するか、または設定するかを指定します。以下のようなフラグがあります。
| - | 指定した許可を除去します。 |
| + | 指定した許可を適用します。 |
| = | 選択したアクセス権フィールドをクリアし、それを指定した許可に設定します。= の後ろに許可を指定しない場合は、chmod コマンドは、選択したフィールドからすべての許可を除去します。 |
3 組目のフラグは除去、適用、または設定する許可を指定します。以下のようなフラグがあります。
chmod コマンドでは、モードの設定に 8 進表記を使用できます。数値モードは、以下の 1 つ以上の値の和です。
アクセス制御: このプログラムを、トラステッド・コンピューティング・ベースに通常のユーザー・プログラムとしてインストールしてください。
ファイルのモードを変更できるのは、そのファイル所有者または root ユーザーだけです。
このコマンドは次の終了値を戻します。
| 0 | コマンドは正常に実行され、要求された変更はすべて完了しました。 |
| >0 | エラーが発生しました。 |
chmod g+w chap1 chap2
これにより、ファイル chap1 と chap2 に、 グループ・メンバーの書き込み許可が追加されます。
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
chmod u=rwx,go= cmd
これにより、ファイルを所有するユーザーに、読み取り、書き込み、および実行許可が与えられます (u=rwx)。また、グループや、その他のユーザーは、いかなる方法でもファイル cmd へのアクセスができなくなります (go=)。
シェル・コマンド・ファイル cmd の実行許可がある場合、以下のように入力して実行できます。
cmd
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 の所有するデータ・ファイルにアクセスすることが可能になります。
このようにして、ユーザー betty は cmd コマンドを使ってデータ・ファイルにアクセスできます。しかし、このユーザーが標準シェル・コマンドを使用して間違ってそれらのデータ・ファイルに損傷を与えるようなことはありません。
chmod 644 text
これにより、所有者の読み取り/書き込み許可が設定されます。また、読み取り専用モードがグループと他のユーザーに対して設定されます。このコマンドは、ファイルに関連する可能性のあるすべての拡張 ACL も除去します。
./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 コマンドが入っています。 |