Quando o proprietário do arquivo faz parte de vários grupos, como ls -l
decide qual grupo mostrar? Por exemplo, no MacOS, vejo
drwx------+ 48 flow2k staff 1536 Feb 5 10:11 Documents
drwxr-xr-x+ 958 flow2k _lpoperator 30656 Feb 22 16:07 Downloads
Aqui os grupos mostrados para os dois diretórios são diferentes ( staff
e _lpoperator
) - em que isso se baseia? Eu sou um membro de ambos os grupos.
Eu acho que essa pergunta decorre de um mal-entendido de como os grupos funcionam. Os grupos listados
ls -l
não são o grupo em que o usuário está potencialmente, mas o grupo ao qual o arquivo pertence. Cada arquivo pertence a um usuário e a um grupo. Muitas vezes, esse usuário está no grupo, mas isso não é necessário. Por exemplo, meu usuário está nos seguintes grupos:mas não, digamos, no grupo
cups
. Agora, vamos criar um arquivo.Isso é de propriedade do usuário
sparhawk
e do grupo principal para mim, que também é chamado desparhawk
. Vamos agora alterar o proprietário do grupo do arquivo.Você pode ver que o grupo que agora possui o arquivo não é um grupo no qual estou.
Este conceito permite a manipulação precisa de permissões de arquivo. Por exemplo, você pode criar um grupo com os membros X, Y e Z e compartilhar arquivos entre os três. Você pode conceder permissões de gravação ao X, mas apenas conceder permissões de leitura aos outros (o grupo).
Nas permissões tradicionais, um arquivo pertencerá a um grupo, não importa a quantos grupos um usuário pertença.
Quando um arquivo é criado O grupo é definido como o grupo primário do usuário. O usuário pode movê-lo para qualquer um de seus grupos.
Se você tiver ACLs (Posix ACLs, podem ser diferentes das ACLs no MacOS)
então pode haver mais de um grupo. No entanto, ls mostra apenas o primeiro grupo e o modo mostra a máscara do grupo. (Isso pode ser confuso. Seria melhor se mostrasse ACL para o nome do grupo).
Um usuário não pode alterar o primeiro grupo para nenhum grupo do qual não seja membro. Mas eles podem adicionar permissões de grupo e usuário auxiliares (para qualquer grupo ou usuário).
Você não precisa de permissões de root (sudo) para fazer nada disso.