2013-09-16 13:33:11 +0000 2013-09-16 13:33:11 +0000
27
27

www-dataグループへの書き込み権限の付与

私はホームページを作成していて、機能の一部にユーザーが生成したデータをphpで書き出すというものがあります。私はUbuntu 13.04でnginxを使用しています。今のところテストのみで、すべての機能はlocahost上のnginxを介して提供されています。

私のphpスクリプトはテキストファイルの書き込みに失敗してしまいました(手動ではできるのですが)、私の/var/www/example.com/public_htmlディレクトリへの書き込みのパーミッションの問題だと思います。

今のところ私(iain)はこのディレクトリを所有していますが、/var/wwwディレクトリとその中の全ての所有権をwww-dataユーザ(というべきかグループ?)に移して、自分をwww-dataグループに追加する方が理にかなっているように思えます。この方法は以下のようにするのが正しいのでしょうか?

useradd -G www-data iain
chown -R www-data:www-data /var/www/example.com
chmod 775 /var/www

ということは、これでwww-dataグループの誰でも/var/wwwで読み書きや実行ができるようになったということでしょうか?

回答 (1)

53
53
53
2013-09-16 13:53:44 +0000

まず、useraddは新しいユーザを作成します。あなた(iain)は既に存在しているので、代わりにusermodをコールします。つまり、次のようになります。

sudo usermod -aG www-data iain
addgroup www-data

(Debian ベースのサーバ (Ubuntu を含む) では -a に注意してください。これを忘れてしまうと www-data グループのみに所属することになります。SUSEタイプのサーバでは、オプションは-Aではなく-aGになっていますので、man usermodをよく読んで正しく設定してください)。

第二に、apache が /var/www に完全に rw アクセスできるようにしてはいけません。一般的なルールとして、必要なものだけを許可し、それ以上は何も許可しない 最小特権の原則 )。この場合、www-data に書き込む(および読む)には apache (www-data)とあなた(/var/www/example.com/public_html グループ)が必要なので、

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 770 /var/www/example.com/public_html

編集 : あなたの元の質問に答えると、www-data のメンバーは誰でも /var/www を読んで実行することができます(パーミッションの最後のビットが 5 = read + exec になっているからです)。しかし、あなたは -R スイッチを使っていないので、これは /var/www にのみ適用され、/var/www に含まれるファイルやサブディレクトリには適用されません。さて、書き込みができるかどうかは別問題で、設定していないroot:rootのグループに依存します。通常は-aGなので、(おそらく)書き込みはできないと思います。

2014-06-22の編集 : Debianベースのサーバではmanオプションが有効であることを追記しました。どうやらディストリビューションによって異なるようなので、実行する前に 0x6& を注意深く読んでください。

関連する質問

6
10
8
5
3