言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Linux & Mac & Bashコマンド辞典

  1. トップページ
  2. Linux & Mac & Bashコマンド辞典
  3. chmod / chown / chgrp

chmod / chown / chgrp

『chmod / chown / chgrp』は Linux のファイル権限と所有者を管理するコマンドです。『chmod』でパーミッション(読み取り・書き込み・実行)を変更し、『chown』でファイルの所有ユーザーを、『chgrp』で所有グループを変更します。Webアプリのデプロイ時にはファイルの権限設定ミスがセキュリティホールや動作不良の原因になるため、正しい設定パターンを覚えておくことが重要です。

構文

数値モード(Octal mode)では、所有者・グループ・その他の順に rwx を数値で指定します。r=4、w=2、x=1 の合計値で権限を表します。644(rw-r--r--)は一般的な設定ファイル、755(rwxr-xr-x)は実行ファイル・ディレクトリによく使われます。

chmod {3桁の8進数} {ファイル/ディレクトリ}

シンボリックモード(Symbolic mode)では、対象(u=所有者 / g=グループ / o=その他 / a=全員)と演算子(+=追加 / -=削除 / ==置き換え)を組み合わせて権限を変更します。

chmod {対象}{演算子}{権限} {ファイル}

ディレクトリ以下のすべてのファイルとサブディレクトリに権限を一括適用します。

chmod -R {モード} {ディレクトリ}

ファイルの所有ユーザーを変更します(root 権限が必要です)。コロン区切りでグループも同時に変更できます。

sudo chown {ユーザー} {ファイル}
sudo chown {ユーザー}:{グループ} {ファイル}

ディレクトリ以下を再帰的に所有者変更します。Webサーバーへの権限委譲時によく使います。

sudo chown -R {ユーザー}:{グループ} {ディレクトリ}

ファイルの所有グループだけを変更します。-R でディレクトリ以下に再帰的に適用できます。

sudo chgrp {グループ} {ファイル}
sudo chgrp -R {グループ} {ディレクトリ}

構文一覧

操作コマンド説明
パーミッションを数値で設定chmod {3桁} {ファイル}r=4・w=2・x=1 の合計値で所有者・グループ・その他の順に指定します。
パーミッションをシンボルで追加chmod {対象}+{権限} {ファイル}『u』(所有者)、『g』(グループ)、『o』(その他)、『a』(全員)と『r』、『w』、『x』を組み合わせて権限を追加します。
パーミッションをシンボルで削除chmod {対象}-{権限} {ファイル}指定した対象から権限を削除します。
パーミッションをシンボルで置換chmod {対象}={権限} {ファイル}指定した対象の権限を指定したものだけに置き換えます。
ディレクトリ以下を再帰的に変更chmod -R {モード} {ディレクトリ}ディレクトリ以下のすべてのファイル・サブディレクトリに一括適用します。
所有ユーザーを変更chown {ユーザー} {ファイル}ファイルの所有ユーザーを変更します。root 権限が必要です。
所有ユーザーとグループを変更chown {ユーザー}:{グループ} {ファイル}所有ユーザーとグループを同時に変更します。
所有者をディレクトリ以下に一括適用chown -R {ユーザー}:{グループ} {ディレクトリ}ディレクトリ以下を再帰的に所有者変更します。Webサーバーへの権限委譲時によく使います。
所有グループを変更chgrp {グループ} {ファイル}ファイルの所有グループだけを変更します。
所有グループを再帰的に変更chgrp -R {グループ} {ディレクトリ}ディレクトリ以下のグループを一括変更します。
現在のパーミッション確認ls -l {ファイル}ファイルのパーミッション・所有者・グループを表示します。
パーミッションを数値で確認stat -c "%a %n" {ファイル}パーミッションを8進数で確認します。『chmod』で設定した値の確認に便利です。

使用例

ファイルのパーミッションを確認する

ファイル一覧とパーミッションを確認します。

$ ls -l /var/www/html/app/
合計 24
-rw-r--r-- 1 www-data www-data 1024 Mar 25 12:00 config.php
-rwxr-xr-x 1 www-data www-data 2048 Mar 25 12:00 deploy.sh
drwxr-xr-x 2 www-data www-data 4096 Mar 25 12:00 storage
-rw------- 1 root     root      512 Mar 25 12:00 .env

パーミッションを8進数で確認します。設定値の検証に便利です。

$ stat -c "%a %n" /var/www/html/app/config.php
644 /var/www/html/app/config.php
Webアプリの典型的な権限設定をする

アプリ全体の所有者を Webサーバー(www-data)に変更します。ディレクトリは 755(所有者が rwx、他は r-x)、静的ファイルは 644 に設定します。ログ・キャッシュ・アップロード先など書き込みが必要なディレクトリは 775、機密ファイルは 600(所有者のみ読み書き)、スクリプトには実行権限(755)を付与します。

$ sudo chown -R www-data:www-data /var/www/html/jujutsu-app/
$ sudo find /var/www/html/jujutsu-app/ -type d -exec chmod 755 {} \;
$ sudo find /var/www/html/jujutsu-app/ -type f -exec chmod 644 {} \;
$ sudo chmod -R 775 /var/www/html/jujutsu-app/storage/
$ sudo chmod -R 775 /var/www/html/jujutsu-app/cache/
$ sudo chmod -R 775 /var/www/html/jujutsu-app/uploads/
$ sudo chmod 600 /var/www/html/jujutsu-app/.env
$ sudo chmod 755 /var/www/html/jujutsu-app/deploy.sh
$ stat -c "%a %n" /var/www/html/jujutsu-app/.env
600 /var/www/html/jujutsu-app/.env
$ stat -c "%a %n" /var/www/html/jujutsu-app/storage/
775 /var/www/html/jujutsu-app/storage/
シンボリックモードで権限を変更する

所有者に実行権限を追加します。グループとその他から書き込み権限を削除したり、全員の権限を読み取り専用に置き換えることもできます。複数の設定はカンマで区切って同時に適用できます。

$ chmod u+x /home/gojo/scripts/barrier.sh
$ ls -l /home/gojo/scripts/barrier.sh
-rwxr--r-- 1 gojo gojo 256 Mar 25 12:00 /home/gojo/scripts/barrier.sh
$ chmod go-w /var/www/html/jujutsu-app/config.php
$ chmod a=r /var/www/html/jujutsu-app/maintenance.php
$ chmod u+x,o= /home/nanami/tools/analyze.sh
$ ls -l /home/nanami/tools/analyze.sh
-rwxr----- 1 nanami nanami 512 Mar 25 12:00 /home/nanami/tools/analyze.sh
所有者・グループを変更する

ファイルの所有者を www-data に変更します。ディレクトリ以下の所有者とグループをまとめて変更したり、グループだけを別のグループに変更することもできます。

$ sudo chown www-data /var/www/html/jujutsu-app/uploads/itadori_curse.png
$ sudo chown -R www-data:www-data /var/www/html/jujutsu-app/uploads/
$ sudo chgrp -R developers /var/www/html/jujutsu-app/src/
$ ls -l /var/www/html/jujutsu-app/uploads/
合計 8
-rw-r--r-- 1 www-data www-data 4096 Mar 25 12:00 itadori_curse.png
-rw-r--r-- 1 www-data www-data 2048 Mar 25 12:00 sukuna_finger.jpg

概要

『chmod / chown / chgrp』は Linux のパーミッション管理を担う基本コマンドです。パーミッションは所有者・グループ・その他の3区分で rwx(読み取り4・書き込み2・実行1)を設定します。数値モードは『chmod 644』のように一括指定でき、シンボリックモードは『chmod u+x』のように既存の権限を保ちながら差分変更できます。Webアプリの典型的な設定はディレクトリが 755・PHP ファイルが 644・書き込みが必要な storage や uploads が 775・機密ファイル(.env など)が 600 です。変更後は『ls -l』や『stat -c "%a %n"』で実際の設定値を確認する習慣をつけると設定ミスを早期に発見できます。ファイルの権限確認には ls コマンドも合わせて参照してください。

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