Se sabe que todos los usuarios son miembros del grupo 'staff'. Si configura un usuario estándar y crea cualquier archivo, una lista de ese archivo en la terminal con 'ls -la' muestra que el grupo de usuarios es 'personal'.
Usando el comando dscacheutil, podemos ver información sobre grupos. Por ejemplo: -
dscacheutil -q group -a name admin
Esto devuelve información sobre el grupo de administración, incluidos todos los miembros.
Sin embargo, cuando solía mirar al grupo 'personal', esperaba ver a los usuarios estándar como miembros del grupo, pero este no es el caso: -
dscacheutil -q group -a name staff
name: staff
password: *
gid: 20
users: root
Entonces, si todos los usuarios estándar son miembros del grupo de personal, ¿por qué no aparecen aquí?
¿Hay otro comando que pueda mostrar a los miembros reales del grupo de personal?
Solo hay una forma confiable de obtener a todos los miembros de un grupo en OS X y la respuesta de 2DD8847 cubre eso. En cuanto a "por qué" no puedo ofrecer una explicación lógica. Todo lo que puedo decirte es lo que diferencia los resultados.
Estos enfoques no incluyen a los usuarios que solo son miembros del grupo a través de PrimaryGroupID. Una forma de verlo es que estos usuarios que no figuran en la lista no se agregaron oficialmente al grupo de personal. Se les acaba de dar un PrimaryGroupID que coincide con el gid del personal. Por lo tanto, no están listados oficialmente con algunos comandos. Lo sé, es 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]
Todo lo que realmente puedo decirle es que sin buscar a los miembros del grupo por su ID de grupo primario (en lugar de enumerar los miembros de un grupo) no obtendrá resultados completos. Atribuyalo a las rarezas de Unix. Hay muchos.
¡Espero que ayude!
Chalk it up to the oddities of OS X. There are many.
¿Qué es exactamente lo que quieres lograr/hacer?
Este comando enumera todos los usuarios en el grupo de personal:
dscl . -list /Users PrimaryGroupID | grep ' 20$'
Explicación: el grupo de personal tiene el PrimaryGroupID de 20.
¿Por qué todos aquí se apegan a esos engorrosos dscl
y dscacheutil
comandos?
¿Por qué no usar el comando mucho más simple id
(y su group
comando amigo aún más simple)?
id - Gn <user>
le dará lo que desea para cualquier usuario de Mac, incluidos los usuarios de Mac 50x "normales".
p.ej.
> id -Gn 501 staff everyone localaccounts
_appserverusr admin _appserveradm _lpadmin com.apple.sharepoint.group.2 com.apple.sharepoint.group.1 _appstore
_lpoperator _developer _analyticsusers com.apple.access_ftp com.apple.access_screensharing com.apple.access_ssh com.apple.access_remote_ae
o, si desea las identificaciones de grupo en su lugar:
> id -G myusername
20 12 61 79 80 81 98 702 701 33 100 204 250 395 398 399 400
staff
?
bmike
El caballero oscuro
scott walter
El caballero oscuro
usuario83961