web-dev-qa-db-ja.com

Apacheドキュメントルートの最高の権限/所有権

Apacheドキュメントルートの正しい権限または所有権を設定するための助けが必要です。ここに私が必要なものがあります:

  • /var/www/html/<site>に保存されているさまざまなウェブサイト
  • 2人のユーザーがsshを使用してWebサイトを更新/管理する必要があります
  • 所有権はApacheユーザーとは異なる必要があります(セキュリティのため)

これどうやってするの?現在、すべてのファイルは誰でも書き込み可能ですが、これは良くありません。サーバーはCentOS 5.5を実行します

ありがとう

14
Marco

新しいグループを作成する

groupadd webadmin

ユーザーをグループに追加します

usermod -a -G webadmin user1
usermod -a -G webadmin user2

サイトディレクトリの所有権を変更する

chown root:webadmin /var/www/html/

サイトディレクトリの権限を変更する

chmod 2775 /var/www/html/ -R

これで、誰でもファイル(Apacheユーザーを含む)を読み取ることができますが、内容を変更できるのはrootとwebadminだけです。

22
Andy

私は-o aclでパーティションをマウントすることを好みます。これにより、setfaclコマンドを使用して、user-group-other権限のみを指定する代わりに、ファイルとフォルダーにきめ細かい権限を設定できます。

そのため、/ etc/fstabのパーティション行にaclを配置するか、mount -o remount、acl/mnt/xyを使用して再マウントし、Webディレクトリの所有権をnobody:nobodyに付与します。 Chmodを770に変更し、setfaclを使用して、必要なフォルダーのみに書き込み権限を付与します。 www-data(またはWebサーバーを実行しているユーザー)にアップロードフォルダーの書き込み権限を与え、自分のユーザーにディレクトリ全体の書き込み権限を与えます。

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

これで、Webサーバーと自分のユーザーを除いて、誰もファイルを読み取ることができなくなります。フォルダー内のすべてのファイルに書き込むことができ、ウェブサーバーはアップロードフォルダーにのみ書き込むことができます。

2
K. Norbert