/var/www 内のファイルを www-data が所有するようにするには、どのように rsync すればよいですか?

/var/www 内のファイルを www-data が所有するようにするには、どのように rsync すればよいですか?

新しい ec2 ubuntu ボックスをセットアップし、apache と php5 をインストールしました。デフォルトでは、権限ubuntuを持つユーザーでボックスにログオンしますsudo

rootapache は として実行され、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 が所有する必要があります。

関連情報