ファイルをアップロードするための正しい権限を設定する


12

「uploads」というディレクトリにファイルをアップロードするphpスクリプトがあります。アップロードを機能させる唯一の方法は、次の場合です。

chmod 777 uploads

私はこれが正しくないことを知っていますが、それを機能させるために何をすべきかはわかりません。

サーバー情報:Amazon EC2上のT1-Micro Amazon Linux AMI 2013.03

質問:

  • どのようなユーザーがアクセスする必要があるかを知るにはどうすればよいですか...たとえば、ApacheまたはWebサーバーのユーザー名は何ですか?

  • どのレベルのアクセス権を与える必要があるか、またそれを行うためにどのコマンドを使用するか。

ありがとう!

編集:私はスタックオーバーフローで多くの答えを見つけました。例えば

/programming/3642241/php-file-upload-permissions

/programming/10842880/setting-permissions-in-php-on-server

/programming/8948537/permission-denied-when-attempting-to-upload-file-with-php

ありがとう

回答:


20

実行してみてください:

ps -ef | grep apache

そして、Apacheサーバーに対応する左端の列を見てください。これはApacheを実行しているユーザーであり、継承によりPHPも実行します。

アップロードディレクトリの所有権をこのユーザーに変更し、アクセス許可を少し制限します。たとえば、Webサーバーユーザーがwww-data同じ名前のグループに属していた場合(のサンプルパスを使用/var/www/uploads):

sudo chown www-data:www-data /var/www/uploads
sudo chmod 755 /var/www/uploads

(またはこのインスタンスで必要なすべての権限)。私はsudoコマンド例で使用しています—この点に関して、スーパーユーザー権限を取得するためにEC2システムがどのように設定されているのか正確にはわかりません。

すでにファイル/ディレクトリをアップロードしている場合は、それらの所有権とアクセス権も変更することをお勧めします。これを行うには、777より適切なアクセス許可から、次のコマンドを実行します。

sudo chown -R www-data:www-data /var/www/uploads
sudo chmod -R 755 /var/www/uploads
sudo find /var/www/uploads -type f -exec chmod -x {} \;

コマンドの各部分を理解していない場合は、コマンドを「盲目的に」実行しないでください。man不明な点がないかページを確認します(非常に簡単なはずです)。


ありがとう。これは非常に役立ちました。apacheがユーザーです。sudo chownコマンドとsudo chmodコマンドはどちらも機能します。
fun_programming

明確で簡単な解決策、ありがとうございます。危険な777許可はもう必要ありません
lhrec_106
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.