por que configurar acl para um usuário altera o grupo perms na saída ls?

3

Estou tentando descobrir por que a saída do comando ls foi alterada. Quero dizer, permissões de grupo para um arquivo.

Eu criei um arquivo chamado "arquivo" e alterei o proprietário e o grupo:

[root@training group3]# touch file
[root@training group3]# ls -la file
-rw-r--r--. 1 root root 0 Sep  8 15:29 file
[root@training group3]# chown uczen file
[root@training group3]# chgrp group3 file
[root@training group3]# ls -la file
-rw-r--r--. 1 uczen group3 0 Sep  8 15:29 file
[root@training group3]# getfacl file
# file: file
# owner: uczen
# group: group3
user::rw-
group::r--
other::r--

Então adicionei direitos adicionais de rwx para o usuário "ula":

[root@training group3]# setfacl -m u:ula:rwx file
[root@training group3]# getfacl file
# file: file
# owner: uczen
# group: group3 
user::rw- 
user:ula:rwx 
group::r-- 
mask::rwx 
other::r--

Minha pergunta é por que a saída do comando ls -la (abaixo) mostra agora "rwx" para o grupo comparado com "r--" mostrado por getfacl acima. Por que os perms para o grupo foram (aparentemente?) Alterados se por setfacl eu apenas adicionei direitos para algum usuário (ula)

[root@training group3]# ls -la file
-rw-rwxr--+ 1 uczen group3 0 Sep  8 15:29 file
    
por ula 08.09.2013 / 22:54

1 resposta

6

Eu não lembro onde eu encontrei a justificativa explicada, mas é basicamente para evitar surpresas.

A maioria das pessoas está acostumada com os três conjuntos visíveis em ls descrevendo todo acesso que qualquer um pode obter. Portanto, se a coluna "grupo" mantiver seu significado original, isso poderá criar falhas acidentais na segurança. Por exemplo, você tem esse arquivo ...

-rw-rwxr--+ 1 uczen group3 0 Sep  8 15:29 file

... e você quer restringir qualquer pessoa, exceto o proprietário de escrever, então você corre chmod go-w , e termina com isto:

-rw-r-xr--+ 1 uczen group3 0 Sep  8 15:29 file

Agora, se você estiver com pressa, talvez não perceba o sinal + de presença de ACLs ou de não saber seu significado. Se houver uma ACL permitindo que outra pessoa grave nesse arquivo, você acaba tendo as permissões mais abertas do que o esperado.

Observe que isso se aplica também aos programas, não apenas aos humanos. Alguns programas - por exemplo, ssh - verificam os bits de permissão do Unix e exigem que o grupo / outro não tenha nenhuma permissão. Se o arquivo tivesse uma ACL permissiva, ssh não saberia. (Mesmo que alguém atualizasse o OpenSSH para saber sobre as ACLs, as versões mais antigas ainda não saberiam sobre elas.)

Por causa disso, as ACLs POSIX têm uma entrada especial mask: para definir o máximo de todas as permissões concedidas ao grupo padrão e para todos os membros da ACL, e O campo "group" das permissões Unix é alterado para exibir o valor de mask: em vez do grupo Unix. Por exemplo, se você usar chmod g=rx , você definirá mask::rx .

Portanto, se você vir rw-r--r--+ , pode ter certeza de que nobody pode gravar esse arquivo, independentemente de quais ACLs possam estar presentes e sem realmente precisar verificá-los. Da mesma forma, se um programa vê um arquivo com permissões 0600, ele também pode ter certeza disso sem precisar de conhecimento especial sobre ACLs POSIX (e, no futuro, RichACLs, NFSv4 ACLs ou outros tipos - se seguirem esse comportamento especial). p>

Observe que a saída getfacl ainda lista a entrada do grupo padrão como group::r-- . Se você quiser realmente alterar essa entrada específica, você precisará fazer isso usando setfacl .

Veja também:

por 09.09.2013 / 02:10