Linux

ドキュメントルートに chmod コマンドを実行する際、指定すると便利なモード引数

投稿日:2019年1月8日 更新日:

1. はじめに

ウェブサイトのドキュメントルートになっているディレクトリに対して chmod コマンドを実行する際に指定すると便利な「モード (mode)」を紹介します。

モードとは、rwx といったパーミッションを表す引数のことです(r:読み込み権限 w:書き込み権限 x:実行権限)。

ここで紹介するモードを指定すれば、「ディレクトリ」と「ファイル」にそれぞれ異なるパーミッションを1度のコマンドでセットすることができます(再帰的に)。

といってもウェブサイトによって適切なパーミッションは異なるので、あくまで紹介するのは私がよく使う「お勧め」ということになります。ご自分の環境で問題ないかどうかを確かめてから使って下さい。

2. chmod に関する前提知識

chmod コマンドの基礎知識については省略します。

以下の記事が分かりやすそうです。

【 chmod 】 ファイルやディレクトリのアクセス権を変更する | 日経 xTECH(クロステック)

3. ディレクトリは rwxr-xr-x ファイルは rw-r--r-- にする

引数で指定したディレクトリに含まれるすべての「ディレクトリ」「ファイル」のパーミッションを以下に変更します。

パーミッションをセットする対象 セットするパーミッション
ディレクトリ rwxr-xr-x
ファイル rw-r--r--

コマンドは以下です。

$ chmod -R a-x,go-wx,u+w,a+rX path/to/dir

解説

chmod コマンドに指定するモードとは、この場合「a-x」や「go-wx」の部分のことを言いますが(カンマで区切っています)、これは前から順番に適用されます。

ですので、この場合以下のような流れでモードがセットされます。

 
順番 適用されるモード ディレクトリのパーミッション(適用後) ファイルのパーミッション(適用後)
1 a-x ??-??-??- ??-??-??-
2 go-wx ??-?--?-- ?--?--?--
3 u+w ?w-?--?-- ?w-?--?--
4 a+rX rwxr-xr-x rw-r--r--

4. ディレクトリは rwxrwxr-x ファイルは rw-rw-r-- にする

引数で指定したディレクトリに含まれるすべての「ディレクトリ」「ファイル」のパーミッションを以下に変更します。

パーミッションをセットする対象 セットするパーミッション
ディレクトリ rwxrwxr-x
ファイル rw-rw-r--

先ほどと違い、グループのパーミッションが「書き込み可」になっています。

コマンドは以下です。

$ chmod -R a-x,go-wx,ug+w,a+rX path/to/dir

解説

この場合以下のような流れでモードがセットされます。

 
順番 適用されるモード ディレクトリのパーミッション(適用後) ファイルのパーミッション(適用後)
1 a-x ??-??-??- ??-??-??-
2 go-wx ??-?--?-- ??-?--?--
3 ug+w ?w-?w-?-- ?w-?w-?--
4 a+rX rwxrwxr-x rw-rw-r--

5. X というモードについて

実行属性を与えるモードは通常 x で指定しますが、似ているようで少し異なる X という指定方法もあります。

X と指定する場合、一定の条件に合致した場合のみ実行属性を与えることができます。

Xを指定した場合の動作
ディレクトリ x と同じように実行属性を与える。
ファイル u, g, o のどれか1つ以上に既に x がついているファイルに対してのみ、指定した対象(u, g, o) に実行属性を与える。

「ディレクトリ」と「ファイル」にそれぞれ異なるパーミッションを1度のコマンドでセットすることができるのは、X のおかげです。

📂-Linux

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Linux

【Linux】man コマンドの基本的な使い方

Linux をコマンドラインで使う場合、man コマンドでマニュアルを読むことができます(man は manual の略です)。 このページでは、この manコマンドの簡単な使い方について説明します。 …

Linux

pip install でインストールしたパッケージを使おうとするエラーが発生する

目次1. はじめに2. 環境3. 対処方法4. おわりに 1. はじめに 以下のコマンドで、Python のパッケージをシステムにインストールしたとします。 $ sudo pip install {パ …

xdebug

Ubuntu 16.04.3 LTS + PHP 7.2 の環境に Xdebug をインストールする

2018年1月29日に、Xdebug 2.6.0 (stable版) がリリースされました。 Homestead にもまた Xdebug がデフォルトでインストールされるようになるのではないかと思いま …

Linux

「よく使うコマンドランキングの表示」を1つのコマンドにする

目次1. はじめに2. 入力が面倒なコマンドを新たなコマンド(今回は関数)にする3. 作成した関数の実行4. コマンドの引数も合わせて調べたい5. 履歴のフォーマットが異なる場合6. まとめ 1. は …

Vim

Vim でファイルを編集した後、sudo でそのファイルを保存する

目次1. 困った状況2. 対応方法3. ~/.vimrc にキーマップを登録する4. 参考 1. 困った状況 Vim でファイルを編集した後に、sudo で開いていないことに気付いた場合の対処法です。 …