PHPユーザーwww-dataのデフォルトのファイル権限


8

私のubuntuマシンにphpがインストールされています。ウェブルートは/var/www

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

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

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

新しいファイルをマシンにFTPアップロードするときはいつでも、グループはファイルへのアクセス許可を持っていません。そのため、ブラウザでアクセスしようとすると、machine-name/new-file.phpアクセスが拒否されたchmodので、新しいファイルにアクセスする必要があります。

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

回答:


6

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

これは私にとっては完璧に機能しましたが、chmod g+sand setfaclコマンドの機能(およびそのパラメーター)について説明していただければ興味深いと思います。
グレッグ、

4

これはすでに整理されていると思いますので、これは同様のリクエストを持つ人のためのものです

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

sudo chown manny -R www

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


1

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.