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

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

関連記事

Vim

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

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

Linux

ssh-agent の代わりに gpg-agent を使う手順

ssh-agent の代わりに gpg-agent を使う手順について説明します。

WSL

WSL の Ubuntu 16.04 LTS を 18.04 LTS にアップグレードする

WSL の Ubuntu 16.04 LTS を 18.04 LTS にアップグレードしたときの手順を記録します。 目次1. 公式な情報2. 現状確認3. アップグレード作業(1) パッケージを最新の …

docker

CentOS 上の Docker にウェブサーバーを入れて80番以外のポートで公開することができない問題【未解決】

CentOS 7 上の Dockerコンテナ にウェブサーバーを入れた場合、80番以外のポートで公開することはできないようです。 例えば、 まず、firewall-cmd コマンドで 8080番ポート …

xdebug

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

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