新しい ec2 ubuntu ボックスをセットアップし、apache と php5 をインストールしました。デフォルトでは、権限ubuntu
を持つユーザーでボックスにログオンしますsudo
。
root
apache は として実行され、php5 は として実行されると思いますwww-data
。
内のすべてのファイル/var/www
を に chown しwww-data:www-data
、フォルダーを 755 に、ファイルを 644 に設定したいと思っています (問題がない限り)。
このように問題なく動作しますが、問題は、rsync
ラップトップからサーバーにファイルを移動すると、ファイルの所有権が変更され(新しいファイルが追加され)、ubuntu:admin
マニュアルを読んで Google で検索したところrsync
、次のような構文を見つけました。
rsync -avzcO (source) (destination) --owner=www-data --group=www-data
ただし、--owner
と は--group
引数を取らず、代わりに、rsync がスーパーユーザーとして実行されている場合に、リモート ファイルの所有者をローカル ファイル システムと同じに強制するために使用されるようです。
そのため、rsync 中にリモート ユーザーとファイル グループを設定するための rsync のソリューションは見つかりませんでした。
何が間違っているのでしょうか?
考え:
- おそらく、/var/www 内のファイルの所有者は になるはずです
ubuntu:admin
。 - rsyncの構文が間違っているのかもしれません
- ユーザーとしてrsyncできると思います
www-data
が、それは良い考えではないようです - 共有ホストと同じようにsuPHPを使用することもできますが、かなり面倒なようです
答え1
これらを www-data に所有させたくはありません。Apache は最初は root として実行され、その後 www-data に権限を付与します。Apache プロセスを所有するユーザーが Web コンテンツに書き込みできるようにはしたくないでしょう。これにより、セキュリティ上の脆弱性が生じます。
Apache が侵害された場合、理想的には www-data ユーザーはシステムのいずれにもアクセスできません。これが最も安全な構成です。Web コンテンツが www-data によって所有されている場合、Apache が侵害されると、攻撃者は Web コンテンツを上書きできます。
ウェブコンテンツは、通常のユーザーが所有する必要があります(ただしnobody
、、www-data
は除きますroot
)。必要Apache が書き込み可能になるには、www-data が所有する必要があります。