upload ファイル - PHP / Apacheでのアップロードフォルダの適切なアクセス許可は何ですか?




設定 パーミッション (8)

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

申し訳ありませんが基本的な質問 - 私は.NETの開発者であり、LAMPセットアップに関する多くの経験がありません。

私は、特定のフォルダへのアップロードを許可するPHPサイトを持っています。 アップロードプロセスが動作するには、このフォルダをWebサーバーユーザーが所有する必要があると言われています。そのため、フォルダを作成してからアクセス許可を設定します。

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

唯一の問題は、FTPユーザーがアップロードしたファイルをまったく変更できないことです。

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


重要なのは、 apacheユーザーとグループが最小限のreadアクセスしか必要とせず、場合によってはアクセスをexecute必要があるというexecuteです。 残りの部分については0アクセス権を与えることができます。

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


少なくとも766。

  • 読み取り= 4
  • 書き込み= 2
  • 実行= 1

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

6 =読み取り+書き込み

  • 最初の番号:所有者
  • 第2の数:グループ
  • 3番目の番号:他のユーザー

SELinuxを使用している場合に、タイプ・コンテキストがtmp_tであることを確認する必要がある場合は、これを追加します。chconユーティリティーを使用してこれを達成できます

chcon -t tmp_tのアップロード


@Ryan Ahearnの答えに基づいて、以下は、 Ubuntu 16.04で、nginxのwebディレクトリ/var/www/htmlの許可を得ているユーザーfrontを作成したものです。

ステップ:

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


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

一般的に、* nix環境では、可能な限り小さなパーミッションを与えることを常に犯してしまいます。

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

あなた自身の入場でmove_uploaded_fileので、アップロードサービスのセキュリティを改善するための役に立つリンクがあります: move_uploaded_file


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


php.netマニュアルには、stdClassとは何かを説明するためのいくつかの堅実な説明と例があります。私は特にこれが好きです。http://php.net/manual/en/language.oop5.basic.php#92123、https https://.com/a/1434375/2352773

stdClassはデフォルトのPHPオブジェクトです。 stdClassには、プロパティ、メソッド、または親はありません。 マジックメソッドをサポートしておらず、インターフェイスも実装していません。

スカラーまたは配列をObjectとしてキャストすると、stdClassのインスタンスが取得されます。 一般的なオブジェクトインスタンスが必要なときはいつでもstdClassを使用できます。

stdClassは基本クラスではありません! PHPクラスはどのクラスからも自動的に継承されません。 明示的に別のクラスを拡張しない限り、すべてのクラスはスタンドアロンです。 PHPはこの点で多くのオブジェクト指向言語とは異なります。

stdClassを拡張するクラスを定義することはできますが、stdClassは何もしないので、何のメリットもありません。





php apache upload