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 で開いていないことに気付いた場合の対処法です。 …

CentOS

CentOS 8 の certbot コマンドがエラーになっていたので対応しました

CentOS 8 の certbot コマンドがエラーになっていたので対応しました。

Let's Encrypt

Let’s Encrypt を使ってみました

無料でSSL証明書が発行できる Let’s Encrypt を使ってみました。 その時の操作手順を紹介します。 本記事執筆時に存在していた「Let’s Encrypt 総合ポー …

Linux

コマンドラインからメールを送信する方法

Linux (や Mac) のターミナルエミュレータ上からメールを送信するコマンドを紹介します。 目次1. sendmail2. mail3. telnet4. おわりに 1. sendmail se …

Linux

Ubuntu: タブ補完が効かなくなった場合の対処法 (bash)

Ubuntu: タブ補完が効かなくなった場合の対処法 (bash)について説明します。