Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. Bash辞典
  3. chmod / chown / chgrp

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 グループ ファイルファイルのグループのみを変更します。
サンプルコード

以下のディレクトリ構造を例に説明します。

📁 ~/project/ 📁 public/ 📄 index.html (-rw-r--r--) 📄 deploy.sh (-rw-r--r--) 📄 secret.conf (-rw-rw-rw-)

スクリプトに実行権限を付与します。もっともよく使うパターンです。

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進数のほうが明示的で読みやすいです。

ファイルの現在のパーミッションや所有者は『ls -l』で確認できます。詳細なメタ情報は『stat』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。