Comprender el grupo de usuarios 'personal'

23

Se sabe que todos los usuarios son miembros del grupo 'personal'. Si configura un usuario estándar y crea algún archivo, una lista de ese archivo en el 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?

El caballero oscuro
fuente
3
Gran pregunta Probablemente quiera recompensar esto si no recibe suficiente atención. Estaba pensando que de alguna manera estaba codificado para mostrar sólo los miembros del grupo primario, pero todos mis usuarios con nombre (por encima de HID 500) son todas grupo primario como el personal y todavía no enumerado por el caché util como en el grupo (donde curiosamente raíz con GID la rueda está en la lista ...) Salsa extraña de hecho ...
bmike
Gracias @bmike, curiosamente, lo mismo se puede ver en la aplicación Directory Utility, que se encuentra en / System / Library / CoreServices.
TheDarkKnight
Oh, pensé que solo root era un miembro del personal. Muestra / etc / group: staff: *: 20: root
Scott Walter
@ScottWalter, los usuarios administradores son miembros del 'personal' y 'admin' mientras que los no administradores son miembros solo del grupo 'personal'. Vea la sección "Propietario, grupo, Otros" aquí: support.apple.com/kb/HT2963
TheDarkKnight

Respuestas:

11

Solo hay una forma confiable de obtener 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 usuarios que solo son miembros del grupo a través de PrimaryGroupID. Una forma de pensarlo es que estos usuarios que no figuran en la lista no se agregaron oficialmente al grupo de personal. Acaban de recibir un PrimaryGroupID que coincide con el gid del personal. Por lo tanto, no están oficialmente listados 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 decirte es que sin buscar miembros del grupo por su Id. De grupo primario (en lugar de enumerar los miembros de un grupo) no te dará resultados completos. Tíralo a las rarezas de Unix. Hay muchos.

¡Espero que ayude!

Fuente

sgelliott
fuente
"estos usuarios que no figuran en la lista no se agregaron oficialmente al grupo de personal. Simplemente se les dio un PrimaryGroupID que coincide con el gid de personal" - Ahora eso tiene sentido. Me pregunto si hay un vector de ataque de seguridad válido con esto; si es posible configurar PrimaryGroupId de un usuario sin agregarlos realmente al grupo de administración, ¿eso les daría derechos de administrador? Investigaré
TheDarkKnight
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 al propietario configurado como personal, pero recuerde que otros permisos anulan el mal uso de esta realidad. Cada carpeta de usuario es "legible" por cualquier otro usuario, pero dentro de cada carpeta de usuario verá que el elemento individual está configurado para que se revoque el acceso de lectura. Entonces, / Usuarios / nombre de usuario / Escritorio tiene usuarios que todos configuraron como Sin acceso : no es una administración de permisos limpia, pero funciona y estás seguro.
sgelliott
44
Quizás quisiste decirChalk it up to the oddities of OS X. There are many.
user3019105
Estaba mirando un disco de otra máquina y sí, los nombres de usuario se renombraron, me convertí en "Steve" como usuario 502 o quizás 501. De todos modos. mi teoría es que "personal" probablemente debería haberse llamado "macosx" y el Buscador lo utiliza para hacer cosas "enraizadas" en nombre de los usuarios habituales. Solo una teoría aleatoria.
Tomachi
2
El personal de @Tomachi no podía ser macosx, se creó años antes de OsX cuando el sistema era NeXT
user151019
4

¿Qué es exactamente lo que quieres lograr / hacer?

Este comando enumera todos los usuarios del grupo de personal:

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

Fuente

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

Bastian Gruber
fuente
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í.
TheDarkKnight
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.
Bastian Gruber
2
Lo sentimos, pero decir "es una implementación" y vincular a las páginas de manual de dscacheutil no responde la pregunta.
TheDarkKnight
Para C ++, puede llamar a una función de shell. Este sitio me pareció 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? ¿Le impiden mostrarle a los miembros porque les gusta?
Bastian Gruber
2
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 mirando los servicios de identidad: developer.apple.com/library/mac/documentation/networking/…
TheDarkKnight