「uploads」というディレクトリにファイルをアップロードするphpスクリプトがあります。アップロードを機能させる唯一の方法は、次の場合です。
chmod 777 uploads
私はこれが正しくないことを知っていますが、それを機能させるために何をすべきかはわかりません。
サーバー情報:Amazon EC2上のT1-Micro Amazon Linux AMI 2013.03
質問:
どのようなユーザーがアクセスする必要があるかを知るにはどうすればよいですか。たとえば、ApacheまたはWebサーバーのユーザー名は何ですか。
どのレベルのアクセス権を与える必要があるか、またそれを行うためにどのコマンドを使用するか。
ありがとう!
編集:私はスタックオーバーフローで多くの答えを見つけました。例えば
https://stackoverflow.com/questions/3642241/php-file-upload-permissions
https://stackoverflow.com/questions/10842880/setting-permissions-in-php-on-server
ありがとう
実行してみてください:
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
ページを確認してください(非常に簡単なはずです)。