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(最終版)を実行しています
何か案は?
ありがとう!
Linuxファイルのアクセス許可は、ディレクトリのsetgid
ビットの影響を受けません。 Set Group IDは、作成者のグループIDではなく、ディレクトリのグループIDを使用してファイルを作成します。
新しく作成されたファイルのアクセス許可は、ファイルの作成者によって指定され、open
または他のシステムコールのファイル作成マスク(umask)の影響を受けます。 PHPのファイル権限に影響を与えるには、fopen
またはchmod
などを使用します。
これは、ACLを使用せずに実行できます。これらのコマンドは同じことを実行します。
chmod g+s .
chgrp devs .
PHPがhttpdから実行可能ファイルを作成することは、異常で安全ではないようです。何をしているのかを知っていただければ幸いです。