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:
- Andreas Grünbacher, SuSE Labs, Listas de controle de acesso POSIX no Linux