Linux ACL を、権限を持つ特定のグループにデフォルト設定するにはどうすればよいでしょうか?

Linux ACL を、権限を持つ特定のグループにデフォルト設定するにはどうすればよいでしょうか?

www\つまり、次のようなディレクトリがあります:

[eugene@server ~]$ ll
合計 0
drwxrwx---. 2 ユージーン ユージーン 57 12月10日 16:04 www

このディレクトリに作成されたすべての新しいファイルがグループに属するようにしたいapache そして権限を持っています770

そこで私はこうしました:

[eugene@server ~]$ chgrp apache www/
[eugene@server ~]$ setfacl -Rm u:eugene:rwx,d:g:apache:rwx,d:o:--- www/
[eugene@server ~]$ ll
drwxrwx---+ 2 eugene apache 43 12月10日 16:10 www
[eugene@server ~]$ echo 123 > www/test.txt
[eugene@server ~]$ ll www/
-rw-rw----+ 1 ユージーン ユージーン 12月4日 10 16:11 test.txt
[eugene@サーバー ~]$  

ご覧のとおり、test.txtは予期されたグループなしで作成されましたapache。 また、x(実行) 権限も設定されていません...

ここで何が欠けているのでしょうか?

答え1

ディレクトリ内のファイルを Apache グループで作成するには、SETGUID ビットを設定することをお勧めします。

chmod +2000 www

ファイルを作成するためのデフォルトの権限については、デフォルトの Linux umask が常に優先されるため、ACL を使用して行うことはできません。umask では、作成されたファイルの権限に 7 桁の数字 (rwx) を含むファイルの作成は許可されません。

代わりにスクリプトを作成することができますmkファイル中身は次の通りです:

touch $1
chmod 770 $1

実行可能にする:

chmod 750 mkfile

これを /usr/local/bin フォルダに配置します。これで、どこにでも 770 権限のファイルを作成できます。

mkfile my_file

関連情報