Как настроить Linux ACL по умолчанию на определенную группу с разрешениями?

Как настроить Linux ACL по умолчанию на определенную группу с разрешениями?

Итак, у меня есть каталог, www\который выглядит так:

[eugene@server ~]$ ll
всего 0
drwxrwx---. 2 евгений евгений 57 дек 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 дек 10 16:10 www
[eugene@server ~]$ echo 123 > www/test.txt
[eugene@server ~]$ ll www/
-rw-rw----+ 1 евгений евгений 4 дек 10 16:11 test.txt
[eugene@server ~]$  

Как вы видите, test.txtбыл создан без ожидаемой группы apache. Также не было xустановлено разрешение (на выполнение)...

Что я здесь упускаю?

решение1

Для того чтобы файлы в вашем каталоге создавались с группой Apache, вам лучше установить бит SETGUID:

chmod +2000 www

Что касается прав по умолчанию на создание файлов, вы не можете сделать это с помощью ACL, потому что стандартная Linux umask всегда побеждает. Umask не позволяет создавать файлы с любыми 7 цифрами (rwx) в правах создаваемых файлов.

Вместо этого вы можете создать сценарийmkfileсо следующим содержимым:

touch $1
chmod 770 $1

сделать его исполняемым:

chmod 750 mkfile

и поместите его в папку /usr/local/bin. Теперь вы можете создавать файлы с правами 770 везде:

mkfile my_file

Связанный контент