Permissão padrão não levada em conta após setfacl

1

Estou tentando definir permissões padrão para que todos os arquivos criados na minha pasta hackerank sejam criados com o rwx por padrão.

Eu fiz um chmod g+s (como eu estava procurando em tópicos diferentes, não tenho certeza se isso fez alguma coisa para ser honesto, mas apenas no caso de mudar alguma coisa):

chmod g+s hackerank/

e, em seguida, tentou definir as ACLs padrão no grupo:

setfacl -d -m g::rwx hackerank/

Se eu verificar as ACLs, elas agora parecem boas:

getfacl hackerank/
# file: hackerank/
# owner: will
# group: will
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:will:rwx
default:mask::rwx
default:other::r-x

Mas eu crio um novo arquivo, ele ainda herda -rw-rw-r--+ (o + mostrando os atributos da ACL em vigor:

touch hackerank/test
ll hackerank/
total 8.0K
drwxrwsr-x+ 2 will will 4.0K Jul 11 16:09 ./
drwxr-xr-x  3 will will 4.0K Jul 11 15:03 ../
-rw-rw-r--+ 1 will will    0 Jul 11 16:09 test

getfacl hackerank/test
# file: hackerank/test
# owner: will
# group: will user::rw-
group::rwx  #effective:rw-
group:will:rwx  #effective:rw-
mask::rw-
other::r--

Alguma pista sobre o que eu perdi?

Obrigado pela sua ajuda

    
por Will1v 11.07.2017 / 18:13

1 resposta

1

Veja também esta pergunta de apenas dois meses antes: configuração de 'x' ( executável) bit usando ACL . Há um bom ponteiro para onde isso é definido na documentação oficial, em resposta de ilkkachu .

Os aplicativos criam arquivos com um determinado modo. O modo é então limitado, mas nunca estendido, pelo atual umask :

strace touch a
...
open("a", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3

por exemplo. Eu tenho um umask de 002 que limita o arquivo criado acima para 0664/-rw-rw-r-- (visualizado com stat a ).

Meu entendimento é que isso limita as ACLs também. ACLs não podem exceder as permissões que você vê quando lê o modo de um arquivo, então

O acesso pelo grupo will no seu arquivo não pode exceder rw- . Isso é imposto pela coisa mask ACL ..., que explica os comentários "efetivos" na saída de getfacl. EDIT: a máscara se aplica a todas as entradas da ACL, exceto "user ::" (o proprietário do arquivo) e "other:". Todas essas entradas da ACL são limitadas pela máscara.

O acesso de usuários e grupos diferentes de will e will não pode exceder r-- .

    
por 12.07.2017 / 10:07