chmod コマンド

目次

概要

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

コマンドライン

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

対象バージョン

説明

モード変更

ファイルやディレクトリのモード(パーミッション)を変更します。モードの詳細については パーミッション を参照してください。下記の例では fileA のモードを 400 に変更します。

$ file 400 fileA

モードは下記の様に指定することもできます。1文字目の u は所有者(user)、g はグループ(group)、o は他者(other)、a はすべて(所有者/グループ/他者)を意味します。2文字目の + は権限付与、- は権限削除を意味します。3文字目の r は読取り権(read)、w は書込み権(write)、x は実行権(execute)を意味します。ディレクトリの場合の x はそのディレクトリへの移動権を意味します。

$ chmod g+w fileA

下記の様に複数の対象や権限を指定することもできます。

$ chmod g+rw,o+rw fileA

ディレクトリ配下すべてのファイルのモード変更

-R オプションをつけると、引数で指定したディレクトリ配下すべてのファイルのモードを変更します。

$ chmod -R 400 ./dirA

対象を通常ファイルやディレクトリのみに絞りたい場合は find と組み合わせます。

$ find ./dirA -type f -exec chmod 644 {} \;
$ find ./dirA -type d -exec chmod 755 {} \;

オプション

再帰的変更

-R, --recursive
指定したディレクトリ配下すべてのファイルに対して再帰的に変更します。

モード指定

--reference=RFILE
コマンドラインでモードを指定する代わりに、RFILE で指定したファイルと同じモードに変更します。

メッセージ表示

-v, --verbose
変更状況を表示します。変更した場合も、変更しなかった場合なども表示します。
$ chmod -v 444 fileA fileB
mode of 'fileA' changed from 0644 (rw-r--r--) to 0444 (r--r--r--)
mode of 'fileB' retained as 0444 (r--r--r--)
-c, --changes
変更状況を表示します。変更した場合のみ表示します。
$ chmod -c 444 fileA fileB
mode of 'fileA' changed from 0644 (rw-r--r--) to 0444 (r--r--r--)
-f, --silent, --quiet
エラーメッセージを表示しません。
-H
コマンドラインに指定したシンボリックリンクのみ、シンボリックリンク先を探索します。GNU chmod 9.5 で追加されました。
-L
シンボリックリンク先も探索します。GNU chmod 9.5 で追加されました。
-P
シンボリックリンク先を探索しません。GNU chmod 9.5 で追加されました。
--dereference
シンボリックリンクファイルではなく、シンボリックリンク先のファイルを変更します。Linux ではデフォルトの動作です。GNU chmod 9.5 で追加されました。
-h, --no-dereference
シンボリックリンク先のファイルではなく、シンボリックリンクファイル自体を変更します。ただし、Linux ではシンボリックリンクファイル自体のモードは意味を持たないため、何も行われません。GNU chmod 9.5 で追加されました。

フェイルセーフ

--preserve-root
-R による再帰的変更の際、引数に / を指定することを禁止します。
--no-preserve-root
-R による再帰的変更の際、引数に / を指定することを許可します。デフォルトの動作です。

ヘルプ表示

--help
ヘルプを表示して終了します。
--version
バージョン情報を表示して終了します。