Web サーバーのパーミッション関連でよく使う Linux コマンドをまとめておきます。
以下の環境で動作を確認しています。
環境1:レンタルサーバー(ConoHa VPS)、CentOS、Apache、MySQL、PHP
環境2:Raspberry Pi (bullseye)
背景
Linux のサーバーをレンタルして、ウェブサイトの運用を開始しました。
Web サーバーを扱うにあたり、ドキュメントルートのファイルなど、パーミッションの確認や設定が常時生じます。
そこで、よく使うコマンドについてまとめておきます。
よく使うコマンド
cat ~ ユーザ一覧の表示
# cat -d: -f1 /etc/passwd
# cat /etc/passwd
> root に加え、apache, mysql, nginx, などのユーザの定義が確認できます。
ls -al ~ ディレクトリ内のファイルの権限を表示する
まず、以下のコマンドでドキュメントルートに移動します。(デフォルト設定での例)
# cd /var/www/html
つぎに、以下でファイルの権限を確認します。
# ls -al
> 所有者とグループの部分が root root か、apache apache となっていると思います。
主なフォルダを移動しながら、ls -al を実行し、所有者とパーミッションを確認して、設定が違っているファイルがないか、確認していくパターンが多いと思います。
chown コマンド ~ 所有者(ユーザー)、グループの変更
一例として、所有者(ユーザー)、グループの変更は、以下で設定できます。ユーザーとファイル名は、適宜、差し替えてください。
# chown apache:apache wp-config.php
# chown apache:apache .htaccess
# chown apache:apache index.php
例えば、ls -al を実行し、wp-config.php、.htaccess の所有者とグループが “root root” などになっていた場合、root ではない apache は、これらのファイルにアクセスできなくなることがあります。
WordPress で記事の編集等を行うと、Web サーバーとなっている apache は、wp-config.php や .htaccess 等にアクセスし、必要により .htaccess 等の更新をする動きとなります。
したがって、apache がこれらのファイルにアクセスできないと、WordPress が正常に動作しないことになります。そこで、上記のように、これらのファイルの所有者を apache にして所有者(のみ)に編集権限を与えておくと、WordPress からのファイルの更新等が可能となります。
chmod コマンド ~ 権限の設定
まず、読み込み read、書き込み write、実行 x の順で、各文字と数値の間に、以下の関係があることを覚えておきます。
-rwxrwxrwx
421421421
3セットある rwx は、左から順に、所有者(u)、グループ(g)、その他ユーザ(o)に対応しています。各セットの rwx に対応した数値の和を取ることで3桁の数値を作り、chmod コマンドでその数値をファイルに設定します。
例1: Web サーバー上の WordPress (Apache) に .htaccess への読み込み・書き込み権限を与える場合
# chmod 606 .htaccess
・ まず、6 0 6 = 4+2 0 4+2 のように読み取り、所有者、グループ、その他ユーザに対応させます。
・ 所有者(管理者、Apache)に読み込み(r)、書き込み(w)権限を与えます。
・ ユーザに読み込み(r)、書き込み(w)権限を与えます。
例2: Web サーバー上の WordPress の設定ファイル wp-config.php については、所有者 (Apache) のみ読み込みできるようにする場合
# chmod 400 wp-config.php
・ 所有者(管理者、Apache)のみに、読み込み権限( rwx の r )のみを与えます。
例3: Raspberry Pi を Web サーバー化して Python の Web アプリを設定したとき、ローカルネットワーク内のユーザが Web アプリ(calc1.py、電卓アプリ)を実行できるようにする場合
# chmod 700 calc1.py
・ 所有者にはすべての権限(4+2+1)を与え、グループとその他ユーザーには、権限を与えないようにする事例です。
たとえば、Python 3 で HTTP サーバーのソフトウェアを動かして、他のローカルネットワークから、ブラウザ経由で cgi-bin フォルダ内にある calc1.py を呼び出したとき、実際に calc1.py を実行するのは所有者 (pi) となります。そこで、所有者に実行権限(+x) を与えておけば、スクリプトは動くことになります。
まとめ
できるだけシンプルに、パーミッション関連でよく使う Linux コマンドをまとめました。
Webサーバーの設定であれば、この程度で大半を網羅できるのではないかと思います。
他にも、よく使うコマンドなどをまとめています。
もし関心があるようでしたら、関連リンクも参考にしてみてください。
関連リンク
・ ファイル操作でよく使うコマンド 【Linux】
・ ファイアーウォール関連でよく使うコマンド 【Linux】
・ LAMP のバージョン確認コマンド 【Linux】
・ エラーコードのまとめ 【Webサーバー】
・ Linux の権限設定と WordPress との関係【Webサーバー】
・ Web サーバーのアクセスログの確認方法 【Linux】
・ トップページのレイアウト崩れが起きたとき【WordPress】
・ Webサーバーで動く Python アプリ 【Raspberry Pi 版】