ユーザーは、PHPが自分の/ home /ディレクトリにファイルを書き込むようにしたいので、usermod -a -G www-data username
を実行するようにアドバイスしています。ここでusername
はユーザー名です。私はそうではありませんでした。これがセキュリティの問題であったかどうかを確認してください。
これに取り組む最良の方法は何ですか?
提案されたコマンドは、ユーザーをwww-data
グループに追加します。これにより、意図しない追加のアクセス許可が与えられる可能性があります。特に、www-data
グループに制限されているすべてのファイルにアクセスできるようになります。これはおそらくあなたが意図したよりもはるかに多いでしょう。
たとえば、2人のユーザーがこのリクエストを行い、www-data
グループに追加され、各ユーザーが~/www-shared
をwww-data
グループに開いたとします。その後、それぞれが相手のwww-shared
ディレクトリに対して読み取りと書き込みを行うことができます。
アクセス制御リストは、指定された目的に対してはるかに適切に見えます。これには、オペレーティングシステムとファイルシステムがACLをサポートしている必要があります。 Linuxでは、ファイルシステムがacl
オプションでマウントされていることを確認してください。次に、ユーザーはsetfacl -m user:www-data:rwx ~/www-shared
を実行して、ディレクトリをwww-data
ユーザーと共有できます。
それでも、この問題は、Webサーバーを実行している多くの人々が以前に直面したことのように聞こえます。したがって、Apacheツールボックスを含むはるかに優れたソリューションがあるかもしれません。
ユーザーwww-dataはユーザーのグループに含まれるため、これはお勧めできません。したがって、Webサーバーはこのユーザーのすべてのファイルを操作できます。
また、システム上の他のユーザーは、単純なphpスクリプトを介して、指定されたユーザーのファイルから読み取りおよび書き込みを行うことができます。
一般に、Webサーバーに必要以上の書き込み/読み取りアクセスを許可することはお勧めできません。したがって、書き込みアクセスが必要なディレクトリ(またはファイル)でのみアクセス許可を拡大したい場合があります。たとえば、これはアップロードディレクトリにすることができます。
お気に入り...
chgrp www-data /home/foobar/public_html/wordpress/uploads
chmod -R g+rwX /home/foobar/public_html/wordpress/uploads