Compreendendo o grupo de usuários 'equipe'

23

Sabe-se que todos os usuários são membros do grupo 'equipe'. Se você configurar um usuário padrão e criar qualquer arquivo, uma lista desse arquivo no terminal com 'ls -la' mostrará o grupo de usuários como 'equipe'.

Usando o comando dscacheutil, podemos ver informações sobre grupos. Por exemplo: -

dscacheutil -q group -a name admin

Isso retorna informações sobre o grupo de administradores, incluindo todos os membros.

No entanto, quando usado para examinar o grupo 'staff', esperava ver usuários padrão como membros do grupo, mas este não é o caso:

dscacheutil -q group -a name staff

name: staff
password: *
gid: 20
users: root

Portanto, se todos os usuários padrão são membros do grupo de funcionários, por que eles não aparecem aqui?

Existe outro comando que pode mostrar os membros reais do grupo de funcionários?

O Cavaleiro das Trevas
fonte
3
Ótima pergunta. Provavelmente vou querer recompensá-lo se não receber atenção suficiente. Eu estava pensando que, de alguma forma, foi codificado para mostrar apenas os membros do grupo principal, mas todos os meus usuários nomeados (acima do hid 500) são todos o grupo principal como equipe e ainda não estão listados pelo utilitário de cache como no grupo (onde estranhamente raiz com o GID de roda está listado ...) Odd molho de fato ...
bmike
Obrigado @bmike, curiosamente, o mesmo pode ser visto no aplicativo Directory Utility, que está em / System / Library / CoreServices.
TheDarkKnight
Oh, eu pensei que apenas a raiz era um membro da equipe. Como / etc / group shows: staff: *: 20: root
Scott Walter
@ScottWalter, os usuários administradores são membros de 'staff' e 'admin', enquanto os não administradores são membros apenas do grupo 'staff'. Consulte a seção "Proprietário, grupo, outros" aqui: support.apple.com/kb/HT2963
TheDarkKnight

Respostas:

11

Existe apenas uma maneira confiável de obter todos os membros de um grupo no OS X e a resposta do 2DD8847 cobre isso. Quanto ao "porquê", não posso oferecer uma explicação lógica. Tudo o que posso dizer é o que diferencia os resultados.

Essas abordagens falham ao incluir usuários que são apenas membros do grupo via PrimaryGroupID. Uma maneira de pensar é que esses usuários não listados não foram adicionados oficialmente ao grupo de funcionários. Eles receberam apenas um PrimaryGroupID que corresponde ao gid da equipe. Portanto, eles não são listados oficialmente com alguns comandos. Eu sei, é um absurdo.

RESULTADOS INCOMPLETOS:

dscl . -read /Groups/[groupname]
dscl . -read /Groups/[groupname] GroupMembership
dscacheutil -q group -a name [groupname]

RESULTADOS COMPLETOS:

dscl . -list /Users PrimaryGroupID | grep [gid]

Tudo o que posso dizer é que, sem consultar os membros do grupo por seu PrimaryGroupID (em vez de listar os membros de um grupo), ele não fornecerá resultados completos. Giz até as esquisitices do Unix. Há muitos.

Espero que ajude!

Fonte

sgelliott
fonte
"esses usuários não listados não foram adicionados oficialmente ao grupo de funcionários. Eles receberam apenas um PrimaryGroupID que corresponde ao gid da equipe" - Agora isso faz sentido. Gostaria de saber se existe um vetor de ataque de segurança válido com isso; se for possível definir o PrimaryGroupId de um usuário sem realmente adicioná-lo ao grupo de administradores, isso lhes daria direitos de administrador? Eu investigarei.
TheDarkKnight
Não quis sugerir que algo está errado. Não se preocupe, os funcionários não têm direitos de administrador em sua máquina. No OS X, quase tudo tem o proprietário definido para a equipe, mas lembre-se de que outras permissões substituem o uso indevido dessa realidade. Cada pasta do usuário é "legível" por todos os outros usuários, mas dentro de cada pasta do usuário, você verá que um item individual está definido para ter o acesso de leitura revogado. Portanto, / Users / nome de usuário / Desktop tem todos os usuários definidos como Sem acesso - não é um gerenciamento de permissões limpo, mas funciona e você está seguro.
Sgelliott 15/05
4
Talvez você quis dizer #Chalk it up to the oddities of OS X. There are many.
30301010
Eu estava olhando para um disco de outra máquina e, sim, os nomes de usuário foram renomeados, e me tornei "steve" como usuário 502 ou talvez 501. de qualquer maneira. minha teoria é que "equipe" provavelmente deveria ter sido chamada de "macosx" e é usada pelo Finder para fazer coisas "raiz" em nome dos usuários comuns. apenas uma teoria aleatória.
Tomachi 24/09
2
Equipe @Tomachi não pôde ser macosx que foi criado nenhum anos antes OsX quando o sistema foi NeXT
user151019
4

O que exatamente você deseja alcançar / fazer?

Este comando lista todos os usuários no grupo de funcionários:

dscl . -list /Users PrimaryGroupID | grep ' 20$'

Fonte

Explicação: O grupo de funcionários possui o PrimaryGroupID de 20.

Bastian Gruber
fonte
Estou tentando entender por que o grupo da equipe não mostra sua lista de membros via dscacheutil e o Utilitário de Diretório. Meu principal objetivo é recuperar a lista de membros de um grupo usando C ++, sem chamar um processo separado. Durante esse processo, me deparei com a questão do grupo que não exibia seus membros e quero saber por que esse é o caso.
TheDarkKnight
Por que o dscacheutil não lista o grupo de funcionários ... eu não sei. developer.apple.com/library/mac/documentation/Darwin/Reference/… É uma implementação e, de alguma forma, eles decidiram não mostrá-los.
Bastian Gruber
2
Desculpe, mas dizer "é uma implementação" e vincular às páginas de manual do dscacheutil não responde à pergunta.
TheDarkKnight
Para C ++, você pode chamar uma função shell. Achei este site muito útil: blog.earth-works.com/2012/09/13/… Acho que não há nenhuma razão para que eles não o mostrem. Eles construíram uma função e você está perdendo alguma coisa .. o que devo dizer. Eles impedem que você mostre os membros porque eles gostam?
Bastian Gruber
2
Chamar uma função shell gera um processo separado. Por várias razões, isso não é viável para o projeto em que estou trabalhando. Agora estou vendo os Serviços de identidade: developer.apple.com/library/mac/documentation/networking/…
TheDarkKnight