web-dev-qa-db-ja.com

setfaclを使用してデフォルトのファイル権限を設定する

Apacheサービスユーザーを介してhttpdによって作成された新しいファイルにデフォルトのACLを設定して、ファイルがGUID devユーザーアカウント(よく呼ばれるdevs)、および特定のアクセス許可に設定します。

PHP Webページによって作成されたファイルにはApache所有者とdevsがあるため、SGIDは正常に機能しているようです。グループ。ただし、ACLがrwxrwx---である代わりに、rw-rw----があります。

[root@webserver ~]# cd /var/www/html
[root@webserver html]# setfacl -Rb .                  
[root@webserver html]# chmod -R g+s .                
[root@webserver html]# setfacl -Rdnm u:Apache:rwx,g:devs:rwx .
[root@webserver html]# getfacl .
# file: .
# owner: Apache
# group: devs
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:user:Apache:rwx
default:group::rwx
default:group:devs:rwx
default:mask::rwx
default:other::---

[root@webserver html]# getfacl data.txt
# file: data.txt
# owner: Apache
# group: devs
user::rw-
user:Apache:rwx     #effective:rw-
group::rwx      #effective:rw-
group:devs:rwx    #effective:rw-
mask::rw-
other::---

data.txtファイルはhttpd/Apacheによって実行されるPHPスクリプトを介して作成されました。所有権は適切に設定されています(Apache /- devs)ですが、ユーザーまたはグループの実行可能権限で作成されていません。

サーバーはCentOSリリース6.9(最終版)を実行しています

何か案は?

ありがとう!

1
Justin

Linuxファイルのアクセス許可は、ディレクトリのsetgidビットの影響を受けません。 Set Group IDは、作成者のグループIDではなく、ディレクトリのグループIDを使用してファイルを作成します。

新しく作成されたファイルのアクセス許可は、ファイルの作成者によって指定され、openまたは他のシステムコールのファイル作成マスク(umask)の影響を受けます。 PHPのファイル権限に影響を与えるには、fopenまたはchmodなどを使用します。

これは、ACLを使用せずに実行できます。これらのコマンドは同じことを実行します。

chmod g+s .
chgrp devs .

PHPがhttpdから実行可能ファイルを作成することは、異常で安全ではないようです。何をしているのかを知っていただければ幸いです。

1
RobertL