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