www-dataグループへの書き込み許可の付与


27

私はウェブサイトを作成していますが、機能の一部はユーザーが生成したデータを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の読み取り、書き込み、実行ができるということですか?

回答:


52

最初にuseradd、新しいユーザーを作成します。あなた(既に)が既に存在するので、usermod代わりに電話をかけたいと思うでしょう。だからそれは次のようになります:

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

-aそのグループにあなたを追加し、他のグループへのメンバーシップを維持するDebianベースのサーバー(Ubuntuを含む)に注意してください。それを忘れると、あなたはwww-dataグループのみに属します。 SUSEタイプのサーバーでは、オプションが適切-Aでは-aGないため、man usermod注意深く読む必要があります。)

第二に、Apacheに完全なrwアクセスを与えたくありません/var/www:これは潜在的に重大なセキュリティ侵害です。一般的なルールとして、必要なものだけを許可し、それ以上は許可しません(最小特権の原則)。この場合、Apache(www-data)と(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 =読み取り+ execであるため)。ただし、-Rスイッチを使用していないため、スイッチにのみ適用され、スイッチ/var/wwwに含まれるファイルとサブディレクトリには適用されません。今、彼らが書くことができるかどうかは別の問題であり/var/www、あなたが設定していないのグループに依存します。私はそれが通常だと思うroot:rootので、いいえ、彼らは(おそらく)書くことができません。

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


なるほど、分かりました。/ var / wwwのグループは、実際にはroot:rootです。リンクをありがとう。利便性を追求するよりも、必要なものを認める習慣を身に付けるほうが賢明なようです。ガイダンスをありがとう。
ダフ

2
わかりましたので、/ var / www / example.com / public_htmlへの書き込みを試みたところ、cp -r php /var/www/example.com/public_html許可が拒否されました。rwxrwx ---このディレクトリの権限を持つwww-dataグループに所属しています。どうしてこれなの?
ダフ

ここには多くのことがあります。たとえば、PHPでいくつかのことを読み取る権限がなかったり、usermodの後にログアウトしてログインしませんでした(これを避けるためにaddgroupでその点に関する私の答えを更新し、sudoの使用場所を正確に指定しました)。
カリモ

に関するすべての回答からwww-data:www-data、これは権限の欠落に関する問題を解決しました。ありがとうございました。
ユージン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.