「eclipse」から新しいファイルを作成するたびに、次の 2 行のコードを実行して r/w 権限を取得する必要があります。
chmod -R 775 /var/www/folder/filename.extension
および/または
sudo chown -R www-data:www-data /var/www
そして、そのサーバー フォルダーにいくつかのファイルをコピーし、ブラウザーの URL から次のようにアクセスするとします。
localhost/folder/filename.extension
Apache サーバーから権限エラーが発生します。
この問題を解決する方法はないのでしょうか?
*注記:主なエラーは、move_uploaded_file()
関数がファイルを/var/www/MyProject/
ディレクトリに移動しようとしたときに発生します。
答え1
SGID ビットを使用します。
これを一度実行すれば、この問題は忘れられます。
chmod g+s /var/www/folder
すべてのサブフォルダーに対して同じ操作を実行することもできます。
find /var/www/folder -type d | xargs chmod g+s
そして、念のため:
find /var/www/folder -type d | xargs chgrp www-data
これで、作成されたすべてのファイルは、/var/www/folder/
そのフォルダを所有するグループに属するようになります。これにより、たとえば、次のグループに属していないことを心配することなく、任意のファイルやフォルダを作成できます。wwwデータあなたが望むグループです。
これは、ディレクトリ内に作成されたファイルまたはフォルダに対してのみ機能することに注意してください。ファイルが他の場所で作成され、ディレクトリ ツリーに移動された場合でも、所有権を手動で変更する必要があります。
例:
# Create folder that belongs to www-data group
$ mkdir test
$ chown john.www-data test
$ ls -l
drwxr-xr-x 2 john www-data 4096 Jun 17 10:14 test
# Create a file, check the ownership
$ touch test/file1
$ ls -l test/
-rw-r--r-- 1 john users 0 Jun 17 10:16 file1
# Set the SGID bit
$ chmod g+s test
$ ls -l
drwxr-sr-x 2 john www-data 4096 Jun 17 10:19 test
# Create a file, check the ownership
$ touch test/file2
$ ls -l test/
-rw-r--r-- 1 john users 0 Jun 17 10:18 file1
-rw-r--r-- 1 john www-data 0 Jun 17 10:19 file2
より詳しい情報ここ。
答え2
新しいファイルとディレクトリにユーザーとグループの権限を割り当てるには、デフォルトの ACL を使用できます。
setfacl -dR u:domain:rwx,g:www-data:rwx /var/www/folder/filename.extension
答え3
まず、質問するときはもっと具体的にすべきだと指摘しておきたいと思います。例えば、使用しているOSやLinuxディストリビューションなどです。そうすることで、解決策を見つけるプロセスが大幅に早まります。そうは言っても、特定のフォルダを変更することでトラブルシューティングを開始できます。所有そしてユニバーサル(ユーザー アクセス制御) を再帰的に次のように実行します。
chown domain:www-data /var/www/folder -chR
chmod 775 /var/www/folder -cR
注記: 末尾のスラッシュを除いた(/)フォルダー名の末尾に「」を追加すると、変更内容がフォルダーとそのすべての内容に適用されます。
ブラウザでファイル (スクリプト?) にアクセスする際に発生する権限エラーについては、ユーザーが でファイルを提供するための適切な権限を持っていることを確認する必要があります。これは、ファイルを編集して以下を追加するapache
ことで対処できます。/etc/httpd/*/httpd.conf
User domain
Group www-data