私はウェブサイトを作成しています、そして機能の一部はphpでユーザー生成データを書き出すことです。 Ubuntu 13.04でnginxを使っています。私がテストしている瞬間、locahost上のnginxを通してすべてが提供されます。
私のphpスクリプトはテキストファイルを書きません(私はこれを手動ですることができます)そして私はそれが私の/var/www/example.com/public_htmlディレクトリに書くためのパーミッション問題だと思います。
現時点で私はこのディレクトリを所有していますが、/ 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で読み書き、実行できることを意味しますか?
まず、useradd
は新しいユーザーを作成します。あなたは(すでに)存在しているので、代わりにusermod
を呼び出したいです。それでそれはそうでしょう:
Sudo usermod -aG www-data iain
addgroup www-data
(Debianベースのサーバ(Ubuntuを含む)では-a
があなたをそのグループに追加し、他のグループへのメンバーシップを維持することに注意してください。それを忘れてあなたはwww-dataグループだけに所属するでしょう。 SUSEタイプのサーバーでは、オプションは-A
ではなく-aG
であるため、正しく理解するためにman usermod
を注意深く読んでください。)
次に、Apacheに/var/www
への完全なアクセス権を与えたくないです。これは潜在的に重大なセキュリティ違反です。一般原則として、必要なものだけを許可し、それ以上のものは許可しない( 最小特権の原則 )。この場合、www-data
に書く(そして読む)にはApache(www-data
)とあなた(/var/www/example.com/public_html
group)が必要です。
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
であると思うので、いいえ、彼らは(おそらく)書くことができません。
2014-06-22に編集:-aG
オプションがDebianベースのサーバーで有効であるというメモを追加しました。明らかにディストリビューションによって異なりますので、実行する前にman
をよく読んでください。