2008-08-14 27 views
43

基本的な質問に申し訳ありません - 私は.NETの開発者であり、LAMP設定の経験はあまりありません。PHP/Apacheでのアップロードフォルダの適切な権限は何ですか?

私は特定のフォルダへのアップロードを許可するPHPサイトを持っています。私は、このフォルダは、アップロードプロセスが機能するためにウェブサーバのユーザーによって所有される必要があると言われているので、私は、フォルダを作成し、その後のような権限を設定します。

chown apache:apache -R uploads/ 
chmod 755 -R uploads/ 

唯一の問題は今、そのFTPユーザですアップロードされたファイルはまったく変更できません。

まだファイルをアップロードしてから、後でウェブサーバーのユーザー以外のユーザーとして変更できる権限設定はありますか?

答えて

36

あなたがメンバーとしてApacheユーザーおよびFTPユーザーの両方を使用して新しいグループを作成し、上の許可を行うことができますこれにより、ApacheとFTPの両方のユーザーは、フォルダ内のファイルに書き込むことができますが、ほかのユーザーはそのファイルを変更できません。

+2

'chmod u + rwX、go + r theFolder'に行くと鈍いマジックナンバーを避けることができます! – Kzqai

+0

これは、ウェブサイトのユーザーがファイルをアップロードする方法でファイルをアップロードするので、おそらく彼が何をしているのか分からないでしょう。あなたにはアクセス許可が必要です777 –

+0

アップロードフォルダにはjpg、gifなどのファイルのみが含まれている必要があります。確かに、誰かがアップロードしたPHPファイルやシェルスクリプトファイルではありません。アップロードフォルダ内のPHPファイルを実行するApacheサーバーを回避する方法はありますか? – Toskan

12

または少なくとも766

  • リード= 4
  • 書き込み= 2
  • 実行= 1

7 =読み取り+書き込み+

6 =読み取る実行+書き込み

  • 最初の数:オーナー
  • 秒数:グループ
  • 3番目の数字:他のユーザー
+5

思いません766他の人があまりにもそこに悪意あるコードの上にファイルをアップロードすることができますか? –

+0

あなたのアップロードフォルダのPHP /その他のスクリプトの実行を無効にしてください –

0
私はあなたがSELinuxを使用している場合、あなたはあなたがCHCONユーティリティを使用することによって、これを達成することができますtmp_tタイプのコンテキストがあることを確認する必要があるということを追加します

CHCON -t tmp_tアップロード

13

もしあなたが本当にこれをしたいなら、私はライアンの答えに行くだろう。

一般的に、* nix環境では、できるだけ少ない権限を与えることを忘れてしまいます。

10回中9回、これは理想的なアクセス許可です。ファイルを変更できるのはWebサーバーだけです。本当にこれを変更する必要がある場合は、グループ内のftpユーザにこれを775に変更してください。

あなたがあなた自身の入場によって、PHPに新しいしているので、ここではあなたのアップロードサービスのセキュリティを向上させるための有用なリンクがあります: move_uploaded_file

1

重要なのは、apacheユーザーおよびグループが最小readアクセス権を持つべきであるということです場合によってはexecuteにアクセスしてください。残りの人は0にアクセスできます。

これは最も安全な設定です。

0

CHOWNまたはchgrpあなたのウェブサイトのフォルダも覚えておいてください。お試しくださいmyusername# chown -R myusername:_www uploads

1

私は、アップロードする権利を持つftpグループを作成するという考え方を支持します。しかし、私は775許可を与える必要はないと思う。 7は読み取り、書き込み、実行の略です。通常は、特定のグループに読み書きを許可したい場合がありますが、場合によっては実行が必要ない場合もあります。 @Ryan Ahearnからの回答に基づいて

0

、次は私が唯一のnginxのWebディレクトリ/var/www/htmlための権限を持つユーザーfrontを作成するUbuntu 16.04に何をしたかです。

ステップ:フォルダの

 
* 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 
* 

関連する問題