PHP/Apache を使用したアップロード フォルダーの適切な権限は何ですか?
質問
基本的な質問で申し訳ありませんが、私は .NET 開発者ですが、LAMP セットアップの経験はあまりありません。
特定のフォルダーへのアップロードを許可する PHP サイトがあります。アップロードプロセスが機能するには、このフォルダーを Web サーバーユーザーが所有する必要があると言われたので、フォルダーを作成し、次のように権限を設定しました。
chown apache:apache -R uploads/
chmod 755 -R uploads/
現時点での唯一の問題は、FTP ユーザーがアップロードされたファイルをまったく変更できないことです。
ファイルをアップロードし、後で Web サーバー ユーザー以外のユーザーとして変更できる権限設定はありますか?
解決
Apache ユーザーと FTP ユーザーの両方をメンバーとして含む新しいグループを作成し、アップロード フォルダー 775 に権限を与えることができます。これにより、Apache ユーザーと FTP ユーザーの両方がフォルダー内のファイルに書き込むことができるようになりますが、他のユーザーはファイルを変更できなくなります。
他のヒント
本当にこれをやりたいのであれば、私はライアンの答えに従うでしょう。
一般に、*nix 環境では、許可をできるだけ少なくすることを常に考えます。
ファイルを変更できる唯一のユーザーは Web サーバーであるため、10 回中 9 回、755 がこれにとって理想的な権限です。本当にこれを変更する必要がある場合は、グループ内の FTP ユーザーでこれを 775 に変更します。
あなたは自他ともに認める php の初心者なので、アップロード サービスのセキュリティを向上させるための役立つリンクを次に示します。move_uploaded_file
少なくとも766。
- 読み取り = 4
- 書き込み = 2
- 実行 = 1
7 = 読み取り + 書き込み + 実行
6 = 読み取り + 書き込み
- 最初の番号:所有者
- 2番目の数字:グループ
- 3番目の数字:他のユーザー
SELinux を使用している場合は、タイプ コンテキストが tmp_t であることを確認する必要があることを付け加えます。これは、chcon ユーティリティを使用して実行できます。
chcon -t tmp_t アップロード
重要なのは、 apache
ユーザーとグループには最小限の値が必要です read
アクセスし、場合によっては execute
アクセス。残りはあなたが与えることができます 0
アクセス。
これは最も安全な設定です。
私は、アップロードする権限を持つ FTP グループを作成するという考えを支持します。ただし、775許可を与える必要はないと思います。7 は読み取り、書き込み、実行を表します。通常は特定のグループに読み書きを許可したいが、場合によっては実行が不要な場合もある。
こちらも覚えておいてください CHOWN
または chgrp
ウェブサイトのフォルダー。試す myusername# chown -R myusername:_www uploads
からの回答に基づいて、 @Ryan Ahearn
, 、以下は私がやったことです Ubuntu
16.04 でユーザーを作成する front
nginx の Web ディレクトリに対する権限のみを持っています /var/www/html
.
手順:
* pre-steps: * basic prepare of server, * create user 'dev' which will be the owner of "/var/www/html", * * install nginx, * * * create user 'front' sudo useradd -d /home/front -s /bin/bash front sudo passwd front # create home folder, if not exists yet, sudo mkdir /home/front # set owner of new home folder, sudo chown -R front:front /home/front # switch to user, su - front # copy .bashrc, if not exists yet, cp /etc/skel/.bashrc ~front/ cp /etc/skel/.profile ~front/ # enable color, vi ~front/.bashrc # uncomment the line start with "force_color_prompt", # exit user exit * * add to group 'dev', sudo usermod -a -G dev front * change owner of web dir, sudo chown -R dev:dev /var/www * change permission of web dir, chmod 775 $(find /var/www/html -type d) chmod 664 $(find /var/www/html -type f) * * re-login as 'front' to make group take effect, * * test * * ok *