私が特に好きな統一的な方法をまだ見つけていないので、私はこの質問を提起しています。理想的には、このディレクトリ構造とアクセス許可の組み合わせは、どのWebサーバーにも適合するはずです(Apacheを想定しないでください)。また、* nixサーバーのみに関心があることにも言及する必要があります。
私は主に探しています:
参考までに、現在取り組んでいるスタックはUbuntu 11.04 + Nginx + php-fpm + Wordpressですが、理想的なソリューションはどのWebサイトでも機能するはずです
権限は、所有者、グループなどに付与できます。
まず、必要なアクセス許可と関与するユーザーを決定します。
www-data
(グループwww-data
)として実行されているNginx:読み取り専用www-data
(グループwww-data
)として実行されているphp-fpm:読み取りおよび書き込みchmod
などの操作を許可する場合は、SFTPユーザーとしてphp-fpm
を実行する必要があります。注意:PHPからサーバーでコマンドを実行できる場合は、彼/彼女.bashrc
!のように、ファイルも変更できます。ファイル/ディレクトリの所有者のみがアクセス許可を変更でき、SSHユーザーにこの所有権を与えることをお勧めします。どうして? webrootで自分のファイルを変更することはできず、rootとしてすべてを行うのは悪い考えだからです。
通常のユーザーはファイル/ディレクトリのグループを変更できません。rootのみが変更できます。特別なSETGIDビットにより、ディレクトリ内のすべてのファイルとディレクトリがグループを継承します。適切なアクセス許可を設定すると、php-fpmとSSHユーザーの両方がファイルを変更できます。
www-data
info coreutils 'file permissions'
を実行して、このビットに関する詳細情報を取得しますumask 007
。これにより、所有者とグループはファイル/ディレクトリに書き込みができ、他のユーザーは許可を取得できません。ウェブルートが/var/www/website1
にあると仮定して、次を実行して所有者/グループと権限を変更します。
Sudo chown -R your_ssh_user_here:www-data /var/www/website1
Sudo find /var/www/website1 -type f -exec chmod 660 {} \;
Sudo find /var/www/website1 -type d -exec chmod 2770 {} \;
www-data
グループに自分を追加します。
Sudo usermod -a -G www-data your_ssh_user_here
グループのメンバーになるには、再ログインする必要があります。
php-fpm
が同じユーザーとして実行されている場合、Webサイトが他のファイルにアクセスできないようにするには、追加の構成が必要です。