パーミッション関連でよく使うコマンド 【Linux】

programming Linux

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サーバーの設定であれば、この程度で大半を網羅できるのではないかと思います。

他にも、よく使うコマンドなどをまとめています。
もし関心のあるようでしたら、関連リンクも参考にしてみてください。

関連リンク
・ サーバーのエラーコードのまとめ 【Webサーバー】
・ Web サーバーのアクセスログの確認方法 【Linux】
・ トップページのレイアウト崩れが起きたとき【WordPress】
・ Webサーバーで動く Python アプリ 【Raspberry Pi 版】

タイトルとURLをコピーしました