chmod コマンド
ファイルやディレクトリのモードビット(パーミッション)を変更します。
概要
chmod
コマンドは、Unix系システムでファイルやディレクトリのパーミッションを変更するコマンドです。アクセスモードを変更することで、誰がファイルを読み取り、書き込み、または実行できるかを制御できます。パーミッションは、シンボリック表記(文字)またはオクタル表記(数字)のいずれかを使用して指定できます。
オプション
-R, --recursive
パーミッションを再帰的に変更し、指定されたディレクトリ内のすべてのファイルとディレクトリに影響を与えます。
$ chmod -R 755 projects/
-v, --verbose
処理されるすべてのファイルについて、変更内容を示す診断メッセージを表示します。
$ chmod -v 644 file.txt
mode of 'file.txt' changed from 0755 (rwxr-xr-x) to 0644 (rw-r--r--)
-c, --changes
verboseと似ていますが、実際に変更が行われた場合のみ報告します。
$ chmod -c 644 file.txt
mode of 'file.txt' changed from 0755 (rwxr-xr-x) to 0644 (rw-r--r--)
-f, --silent, --quiet
ほとんどのエラーメッセージを抑制します。
$ chmod -f 644 nonexistent.txt
使用例
オクタル表記の使用
$ chmod 755 script.sh
$ ls -l script.sh
-rwxr-xr-x 1 user group 1024 May 5 10:00 script.sh
シンボリック表記の使用
$ chmod u+x script.sh
$ ls -l script.sh
-rwxr--r-- 1 user group 1024 May 5 10:00 script.sh
複数のパーミッションの追加
$ chmod u+rwx,g+rx,o+r file.txt
$ ls -l file.txt
-rwxr-xr-- 1 user group 1024 May 5 10:00 file.txt
パーミッションの削除
$ chmod go-w file.txt
$ ls -l file.txt
-rw-r--r-- 1 user group 1024 May 5 10:00 file.txt
ヒント:
オクタル表記の理解
オクタル表記の3桁は、所有者、グループ、その他のユーザーのパーミッションを表します:
- 4 = 読み取り (r)
- 2 = 書き込み (w)
- 1 = 実行 (x)
一般的な組み合わせ:
- 755 (rwxr-xr-x):所有者は読み取り/書き込み/実行可能、他のユーザーは読み取り/実行可能
- 644 (rw-r--r--):所有者は読み取り/書き込み可能、他のユーザーは読み取りのみ可能
- 700 (rwx------):所有者は読み取り/書き込み/実行可能、他のユーザーにはパーミッションなし
シンボリック表記の効果的な使用
u
(ユーザー/所有者)、g
(グループ)、o
(その他)、a
(すべて)+
(パーミッション追加)、-
(パーミッション削除)、=
(正確なパーミッション設定)r
(読み取り)、w
(書き込み)、x
(実行)
デフォルトパーミッションの設定
新しく作成されるファイルとディレクトリのデフォルトパーミッションを制御するには umask
を使用します。
よくある質問
Q1. オクタル表記とシンボリック表記の違いは何ですか?
A. オクタル表記(755など)は数字を使用して正確なパーミッションを設定しますが、シンボリック表記(u+xなど)は他のパーミッションを変更せずに特定のパーミッションを追加または削除できます。
Q2. ファイルを実行可能にするにはどうすればよいですか?
A. chmod +x ファイル名
または chmod u+x ファイル名
を使用して、所有者が実行できるようにします。
Q3. 機密ファイルにはどのようなパーミッションを使用すべきですか?
A. 機密ファイルには、600 (rw-------)のような制限的なパーミッションを使用し、所有者のみが読み書きできるようにします。
Q4. ディレクトリ内のすべてのファイルのパーミッションを変更するにはどうすればよいですか?
A. 再帰オプションを使用します:chmod -R パーミッション ディレクトリ/
参考文献
https://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html
改訂履歴
- 2025/05/05 初版