Como você define a ACL do Linux como padrão para um grupo específico com permissões?

Como você define a ACL do Linux como padrão para um grupo específico com permissões?

Então eu tenho um diretório: www\que se parece com isso:

[eugene@servidor ~]$ ll
total 0
drwxrwx---. 2 eugene eugene 57 10 de dezembro 16:04 www

Quero fazer com que todos os novos arquivos criados neste diretório pertençam ao grupoapache etenha as permissões 770.

Então eu fiz:

[eugene@servidor ~]$ chgrp apache www/
[eugene@servidor ~]$ setfacl -Rm u:eugene:rwx,d:g:apache:rwx,d:o:--- www/
[eugene@servidor ~]$ ll
drwxrwx---+ 2 eugene apache 43 10 de dezembro 16:10 www
[eugene@servidor ~]$ echo 123 > www/test.txt
[eugene@servidor ~]$ ll www/
-rw-rw----+ 1 eugene eugene 4 10 de dezembro 16:11 test.txt
[eugene@servidor ~]$  

Como você pode ver, test.txtfoi criado sem o grupo esperado de arquivos apache. Nem a xpermissão (executar) foi definida ...

O que estou perdendo aqui?

Responder1

Para que os arquivos dentro do seu diretório sejam criados com o grupo Apache, é melhor definir o bit SETGUID:

chmod +2000 www

Quanto aos direitos padrão para criar arquivos, você não pode fazer isso usando ACL, porque umask padrão do Linux sempre vence. Umask não permite criar arquivos com 7 dígitos (rwx) nos direitos dos arquivos criados.

Em vez disso, você pode criar um scriptarquivo mkcom o seguinte dentro:

touch $1
chmod 770 $1

torne-o executável:

chmod 750 mkfile

e coloque-o na pasta /usr/local/bin. Agora você pode criar arquivos com permissões 770 em qualquer lugar:

mkfile my_file

informação relacionada