PHP/Apache を使用したアップロード フォルダーの適切な権限は何ですか?

StackOverflow https://stackoverflow.com/questions/10990

  •  08-06-2019
  •  | 
  •  

質問

基本的な質問で申し訳ありませんが、私は .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
* 

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top