Comprensión del grupo de usuarios 'personal'

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?

Gran pregunta. Probablemente querré recompensar esto si no recibe suficiente atención. Estaba pensando que de alguna manera estaba codificado para mostrar solo a los miembros del grupo principal, pero todos mis usuarios designados (por encima de 500 ocultos) son todos del grupo principal como personal y aún no figuran en la utilidad de caché como en el grupo (donde extrañamente raíz con GID de la rueda está en la lista...) Salsa extraña de hecho...
Gracias @bmike, curiosamente, lo mismo se puede ver en la aplicación Directory Utility, que se encuentra en /System/Library/CoreServices.
Oh, pensé que solo root era un miembro del personal. Como muestra /etc/group: staff:*:20:root
@ScottWalter, los usuarios administradores son miembros de 'personal' y 'administrador', mientras que los que no son administradores son miembros solo del grupo 'personal'. Consulte la sección "Propietario, grupo, Otros" aquí: support.apple.com/kb/HT2963

Respuestas (3)

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!

Fuente

"estos usuarios que no figuran en la lista no se agregaron oficialmente al grupo de personal. Solo se les dio un PrimaryGroupID que coincide con el gid del personal" - Ahora eso tiene sentido. Me pregunto si hay un vector de ataque de seguridad válido con esto; si es posible configurar el PrimaryGroupId de un usuario sin agregarlo realmente al grupo de administración, ¿eso le otorgaría derechos de administración? voy a investigar
No quise sugerir que algo está mal. No se preocupe, los miembros del personal no tienen derechos de administrador en su máquina. En OS X casi todo tiene el propietario configurado como personal, pero recuerda que otros permisos anulan el mal uso de esta realidad. Cada carpeta de usuario es "legible" por todos los demás usuarios, pero dentro de cada carpeta de usuario verá que el elemento individual está configurado para tener acceso de lectura revocado. Entonces , /Users/username/Desktop tiene a todos los usuarios configurados en Sin acceso : no es una administración de permisos limpia, pero funciona y está seguro.
Tal vez quisiste decirChalk it up to the oddities of OS X. There are many.
estaba mirando un disco de otra máquina y sí, los nombres de usuario se renombraron, me convertí en "steve" como usuario 502 o tal vez 501. de todos modos. Mi teoría es que el "personal" probablemente debería haberse llamado "macosx" y el Finder lo usa para hacer cosas "rooteadas" en nombre de los usuarios regulares. sólo una teoría al azar.
El personal de @Tomachi no podía ser macosx, se configuró años antes de OsX cuando el sistema era NeXT

¿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$'

Fuente

Explicación: el grupo de personal tiene el PrimaryGroupID de 20.

Estoy tratando de entender por qué el grupo de personal no muestra su lista de miembros a través de dscacheutil y la Utilidad de Directorio. Mi objetivo principal es recuperar la lista de miembros de un grupo usando C++, sin llamar a un proceso separado. Durante este proceso, me encontré con el problema de que el grupo no mostraba a sus miembros y quiero saber por qué es así.
Por qué dscacheutil no incluye el grupo de personal... no lo sé. developer.apple.com/library/mac/documentation/Darwin/Reference/… Es una implementación, y de alguna manera decidieron no mostrarlos.
Lo sentimos, pero decir "es una implementación" y enlazar a las páginas man de dscacheutil no responde la pregunta.
Para C++, puede llamar a una función de shell. Encontré este sitio muy útil: blog.earth-works.com/2012/09/13/… No creo que haya ninguna razón por la que no lo muestren. Construyeron una función y te falta algo... ¿qué debo decir? ¿Te impiden mostrarte a los miembros porque les gusta?
Llamar a una función de shell genera un proceso separado. Por varias razones, esto no es viable para el proyecto en el que estoy trabajando. Ahora estoy viendo los Servicios de Identidad: developer.apple.com/library/mac/documentation/networking/…

¿Por qué todos aquí se apegan a esos engorrosos dscly dscacheutilcomandos?

¿Por qué no usar el comando mucho más simple id(y su groupcomando 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
¿Cómo se puede usar esto para mostrar todos los usuarios que forman parte del grupo staff?
Ahora veo que lo tengo al revés... puede ver fácilmente los grupos (el primero es el grupo principal) de un usuario específico, pero estos comandos no pueden hacerlo con todos los usuarios.