GNU Core Utilities/chmod
chmod
コマンドは、ファイルやディレクトリのアクセス権限を変更するためのコマンドです。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、細かなオプションの違いがあります。
基本的な使い方
編集chmod [オプション] モード ファイル...
主なオプション(GNU coreutils版)
編集主なオプション オプション 説明 -R, --recursive
ディレクトリ内のすべてのファイルに対して再帰的にアクセス権を変更 -v, --verbose
変更したファイルごとに詳細を表示 -c, --changes
実際に変更されたファイルに対してのみ変更内容を表示 -f, --silent, --quiet
エラーメッセージを表示しない
モードの指定方法
編集chmod
ではアクセス権限を指定するためにモードを使用します。モードの指定には、数字または記号を使用する方法があります。
数字で指定
編集モードは3桁の数字で指定され、各桁は以下のように設定されます:
- 所有者(ユーザー)の権限
- グループの権限
- その他のユーザーの権限
例えば、755
の場合、所有者には読み、書き、実行の権限、グループおよびその他のユーザーには読みと実行の権限が与えられます。
chmod 755 file.txt
記号で指定
編集記号を使ってもアクセス権限を変更できます。記号は以下のように使います:
r
:読み取り権限w
:書き込み権限x
:実行権限u
:所有者(ユーザー)g
:グループo
:その他a
:全員
例えば、u+x
は所有者に実行権限を追加することを意味します。
chmod u+x file.txt
例
編集ファイルに実行権限を追加
編集chmod +x file.sh
file.sh
に実行権限を追加。
所有者に読み書き権限を付与、その他のユーザーに読み権限を付与
編集chmod 644 file.txt
file.txt
に所有者に読み書き権限、その他のユーザーに読み権限を付与。
再帰的にディレクトリ内のすべてのファイルの権限を変更
編集chmod -R 755 directory/
directory/
内のすべてのファイルおよびディレクトリに 755
の権限を設定。
FreeBSD 版との違い
編集FreeBSD でも chmod
コマンドは提供されていますが、GNU coreutils 版といくつか違いがあります。
主な違い:
編集-R
(再帰的に変更)オプションの動作が異なる- FreeBSD では、
chmod -R
が一部のシンボリックリンクには適用されないことがあります。 - 一方、GNU 版ではシンボリックリンクにも再帰的に変更を適用します。
- FreeBSD では、
-v
(詳細表示)オプションの動作が異なる- FreeBSD では、
chmod -v
が一部のファイルシステムでは出力されない場合があります。
- FreeBSD では、
- GNU coreutils 版を FreeBSD で使う方法
coreutils
パッケージをインストールするとgchmod
という名前で GNU 版chmod
が使える。
pkg install coreutils gchmod -R 755 directory/ # GNU coreutils 版の chmod
詳しくは、それぞれの環境で man chmod
を確認してください。