新しいec2 Ubuntuボックスを設定し、apacheとphp5をインストールしました。デフォルトでは、権限をubuntu
持つユーザーとしてボックスにログインしますsudo
。
私はApacheがroot
php5のように実行されていると思いますwww-data
。
問題がなければ、フォルダは755に、ファイルは644に設定してすべてのファイルを/var/www
chown'edしたいと思います。www-data:www-data
これにより問題はうまく機能しますが、問題は、rsync
ラップトップからサーバーにファイルを送信すると所有権が変更され、新しいファイルが追加されることです。ubuntu:admin
マニュアルを読んでrsync
Googleを検索しましたが、次の構文を見ました。
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の所有者である必要があります。