Configurando umask de diretório por meio de ACLs

4

Queremos imitar o comportamento de uma 00sk de todo o sistema em um determinado diretório foo , para garantir o seguinte resultado:

  1. Todos os subdiretórios criados abaixo de foo terão 775 permissões
  2. Todos os arquivos criados sob foo e subdiretórios terão 664 permissões
  3. 1 e 2 acontecerão para arquivos / pastas criados por todos os usuários, incluindo raiz e todos os daemons.

Assumindo que a ACL está ativada em nossa partição, este é o comando que criamos:

setfacl -R -d -m mask:002 foo

... mas isso não funciona. Novos arquivos criados no diretório acabam parecendo:

-rw--w-r--+

Quando executo getfacl no novo arquivo, obtenho:

# file: newfile.py
# owner: root
# group: agroup
user::rw-
group::rwx #effective:-w-
mask::-w-
other::r--

Em outras palavras, aplicar um mask:200 ao ACL não é o mesmo que aplicar umask 200 .

Então, existe uma maneira de aplicar uma umask por diretório a uma ACL?

    
por Yarin 16.12.2012 / 21:32

2 respostas

2

Este é um trabalho típico para ACLs: -)

Seu exemplo

$ mkdir /tmp/foo

Defina as permissões para o próprio diretório

$ setfacl -m g::rwx -m o::rx  /tmp/foo

Defina as permissões para o diretório e os arquivos recém-criados nesse diretório.

$ setfacl -m default:g::rwx -m o::rx  /tmp/foo

Teste

$ mkdir /tmp/foo/bar
$ touch /tmp/foo/bar/baz.py
$ ls -ld /tmp/foo/bar /tmp/foo/bar/baz.py
drwxrwxr-x+ 2 jdoe jdoe 4096 Mar 10 00:06 /tmp/foo/bar
-rw-rw-r--  1 jdoe jdoe    0 Mar 10 00:06 /tmp/foo/bar/baz.py

Explicações

  • O conceito de máscara é muito diferente com a máscara de permissões ACL e Unix. a máscara da ACL é um atributo do arquivo ... que restringe a permissão máxima concedida pela ACL ( mask:r-x + group:foo:rwx = > permissões efetivas = r-x )
  • Aviso: modificar a permissão Unix do grupo também modifica a máscara da ACL (por design!).

Sugestões

  • Use setgid (como chmod 2755 ) para controlar qual grupo pode gravar no arquivo.
  • e / ou conceder explicitamente permissões a um grupo setfacl -m group:dev_team:rwx
por 10.03.2015 / 00:21
0

Você pode usar um dnotify e um script acionados sempre que um arquivo é criado. Consulte: link

    
por 18.12.2012 / 20:14