web-dev-qa-db-ja.com

PHPユーザーwww-dataのデフォルトのファイル許可

私は自分のubuntuマシンにPHPをインストールしています。 Webルートは/var/wwwです

このフォルダのアクセス許可を次のように設定します。

Sudo chown -R ftpuser:www-data/var/www

ftpuserは、ネットワーク上の別のマシンから/ var/wwwにftpできるように設定したユーザーです。 www-dataは、phpが使用するユーザーです。 phpのwhoamiを使用してダブルチェックしました。

新しいファイルをマシンにftpでアップロードするたびに、グループにはファイルへのアクセス権がありません。ブラウザーでmachine-name/new-file.php経由でアクセスしようとすると、許可が拒否されたと言われ、新しいファイルにchmod行く必要があります。

Www-dataユーザー/グループを新しいファイルへのアクセス許可を持つようにデフォルト設定できる方法があるので、新しいファイルごとにchmodを保持する必要はありませんか?

8
JD Isaacks

ACLを使用できます。 Ubuntu 10.10のACLを設定するには、まず/ etc/fstabのaclオプションでファイルシステムをマウントします。

Sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/ext4 defaults、acl 0 1

Sudo mount -o remount,acl /

次に、この目的のためにユーザーが属するグループを作成します。

Sudo groupadd developers
Sudo usermod -a -G developers $username

ユーザーはログアウトしてから再度ログインして、開発者グループのメンバーになる必要があります。

もちろん、/ var/wwwディレクトリに必要なコンテンツがある場合は、これを実行しないでください。ただし、開始するためのセットアップを説明するためだけです。

Sudo rm -rf /var/www
Sudo mkdir -p /var/www/public
Sudo chown -R root.developers /var/www/public
Sudo chmod 0775 /var/www/public
Sudo chmod g+s /var/www/public
Sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public

次に、構成ファイルの「/ var/www」への参照を「/ var/www/public」に置き換えて、リロードします。

Sudo vim /etc/Apache2/sites-enabled/000-default
Sudo /etc/init.d/Apache2 reload

ファイルを作成したユーザー以外のすべてからの削除と名前変更を制限する場合:

Sudo chmod +t /var/www/public

このように、Apacheドキュメントルートの外部に存在するフレームワークのディレクトリを作成したい場合や、サーバーで書き込み可能なディレクトリを作成したい場合は、それでも簡単です。

Apache書き込み可能ログディレクトリ:

Sudo mkdir /var/www/logs
Sudo chgrp www-data /var/www/logs
Sudo chmod 0770 /var/www/logs

Apacheで読み取り可能なライブラリディレクトリ:

Sudo mkdir /var/www/lib
Sudo chgrp www-data /var/www/lib
Sudo chmod 0750 /var/www/lib
6
user8290

あなたはすでにこれを整理していると確信しているので、これは同様のリクエストを持つ人のためのものです

webrootフォルダーで「所有権の変更」コマンドを実行します。

Sudo chown manny -R www

これにより、所有者は「many」をユーザー名に置き換え、wwwフォルダー内で書き込み/読み取りができるようになります。

4
Manny

Webサーバーがファイルを読み取ることさえできない場合、new-file.phpのアクセス許可は600(所有者の読み取りと書き込み)のようなものである可能性が非常に高くなります。 FTPアプリケーションで mask 設定を検索し、007のようなものであることを確認します。

Webアプリケーションがファイルをchmodする必要がある場合(またはファイル所有者のみが実行できる他の操作)、他のアプローチが必要です。 Apacheを使用している場合は、 itk MPM の使用を検討する必要があります。そのモジュールを使用すると、「ftpuser」と同じユーザーを使用して、Apacheでファイルを実行/開くことができます。この主題に関する詳細情報が必要な場合は、コメントを追加してください。

1
Lekensteyn