Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
chmod / chown / chgrp
『chmod』はファイルのパーミッション(アクセス権)の変更、『chown』は所有者の変更、『chgrp』はグループの変更を行うコマンドです。Linuxのマルチユーザー環境でのファイル管理に不可欠です。
構文
chmod [オプション] モード ファイル chown [オプション] ユーザー[:グループ] ファイル chgrp [オプション] グループ ファイル
コマンド・オプション一覧
| コマンド / 記法 | 概要 |
|---|---|
| chmod 755 ファイル | 8進数でパーミッションを設定します(7=rwx, 5=r-x)。 |
| chmod +x ファイル | 全ユーザーに実行権限を追加します。 |
| chmod u+x ファイル | ファイル所有者(user)に実行権限を追加します。 |
| chmod g-w ファイル | グループの書き込み権限を削除します。 |
| chmod o=r ファイル | その他(other)のパーミッションを読み取りのみに設定します。 |
| chmod -R モード ディレクトリ | ディレクトリ以下を再帰的に変更します。 |
| chown ユーザー ファイル | ファイルの所有者を変更します。 |
| chown ユーザー:グループ ファイル | 所有者とグループをまとめて変更します。 |
| chown -R ユーザー ディレクトリ | ディレクトリ以下の所有者を再帰的に変更します。 |
| chgrp グループ ファイル | ファイルのグループのみを変更します。 |
サンプルコード
以下のディレクトリ構造を例に説明します。
スクリプトに実行権限を付与します。もっともよく使うパターンです。
chmod +x deploy.sh ls -l deploy.sh
-rwxr-xr-x 1 user staff 128 Mar 5 10:00 deploy.sh
8進数でパーミッションを指定します。所有者に読み書き実行(7)、グループに読み取りのみ(4)、その他はアクセス不可(0)に設定します。
chmod 740 secret.conf ls -l secret.conf
-rwxr----- 1 user staff 256 Mar 5 10:00 secret.conf
Webサーバー用の定番パーミッションを設定します。
chmod 644 public/index.html ls -l public/index.html
-rw-r--r-- 1 user staff 2048 Mar 5 10:00 public/index.html
chmod 755 public/ ls -ld public/
drwxr-xr-x 2 user staff 4096 Mar 5 10:00 public/
ディレクトリ以下のパーミッションを一括変更します。
chmod -R 755 public/
所有者とグループをまとめて変更します(root 権限が必要です)。
sudo chown www-data:www-data /var/www/html ls -ld /var/www/html
drwxr-xr-x 5 www-data www-data 4096 Mar 5 10:00 /var/www/html
ディレクトリ以下の所有者を再帰的に変更します。
sudo chown -R deploy:deploy /var/www/app
概要
パーミッションの8進数表記は『4=読み取り(r)、2=書き込み(w)、1=実行(x)』の合計です。例えば『rwxr-xr-x』は755(7=4+2+1, 5=4+0+1)です。シンボリック表記(u/g/o と +/-/=)と8進数表記はどちらを使っても構いませんが、スクリプトでは8進数のほうが明示的で読みやすいです。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。