Comprensione del gruppo di utenti "staff"


23

È noto che tutti gli utenti sono membri del gruppo "staff". Se si imposta un utente standard e si crea un file, un elenco di quel file nel terminale con 'ls -la' mostra che il gruppo di utenti è 'staff'.

Usando il comando dscacheutil, possiamo vedere informazioni sui gruppi. Per esempio: -

dscacheutil -q group -a name admin

Ciò restituisce informazioni sul gruppo di amministratori, inclusi tutti i membri.

Tuttavia, quando usato per guardare il gruppo "staff", mi aspettavo di vedere gli utenti standard come membri del gruppo, ma non è così: -

dscacheutil -q group -a name staff

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

Quindi, se tutti gli utenti standard sono membri del gruppo staff, perché non vengono visualizzati qui?

C'è un altro comando che può mostrare i membri reali del gruppo di staff?


3
Ottima domanda Probabilmente voglio ricompensarlo se non ottiene abbastanza attenzione. Pensavo che fosse in qualche modo codificato per mostrare solo i membri del gruppo primario, ma tutti i miei utenti nominati (sopra i 500 nascosti) sono tutti gruppi primari come staff e non sono ancora elencati dall'utilità della cache come nel gruppo (dove stranamente root con GID di la ruota è elencata ...)
Strana

Grazie a @bmike, è interessante notare che lo stesso può essere visto nell'app Directory Utility, che si trova in / Sistema / Libreria / CoreServices.
TheDarkKnight

Oh, ho pensato che solo root fosse un membro dello staff. Come / etc / group shows: staff: *: 20: root
Scott Walter,

@ScottWalter, gli utenti amministratori sono membri di "staff" e "admin" mentre i non amministratori sono membri del solo gruppo "staff". Vedi la sezione "Proprietario, gruppo, Altro" qui: support.apple.com/kb/HT2963
TheDarkKnight

Risposte:


11

C'è solo un modo affidabile per ottenere tutti i membri di un gruppo in OS X e la risposta da 2DD8847 lo copre. Per quanto riguarda "perché" non posso offrire una spiegazione logica. Tutto quello che posso dirti è ciò che differenzia i risultati.

Questi approcci non includono gli utenti che sono solo membri del gruppo tramite PrimaryGroupID. Un modo di pensarci è che questi utenti non elencati non sono stati aggiunti ufficialmente al gruppo del personale. Hanno appena ricevuto un PrimaryGroupID che corrisponde all'addetto del personale. Pertanto non sono elencati ufficialmente con alcuni comandi. Lo so, è assurdo.

RISULTATI INCOMPLETI:

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

RISULTATI COMPLETI:

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

Tutto quello che posso davvero dirti è che senza cercare i membri del gruppo dal loro PrimaryGroupID (invece di elencare i membri di un gruppo) non ti darà risultati completi. Gesso fino alle stranezze di Unix. Ci sono molti.

Spero che sia d'aiuto!

fonte


"Questi utenti non elencati non sono stati aggiunti ufficialmente al gruppo staff. Hanno appena ricevuto un PrimaryGroupID che corrisponde al personale staff" - Ora ha senso. Mi chiedo se esiste un vettore di attacco di sicurezza valido con questo; se è possibile impostare PrimaryGroupId di un utente senza effettivamente aggiungerli al gruppo admin, ciò darebbe loro i diritti di amministratore? Indagherò.
TheDarkKnight

Non intendevo suggerire che qualcosa non va. Non preoccuparti, i membri dello staff non dispongono dei diritti di amministratore sulla tua macchina. In OS X quasi tutto ha il proprietario impostato sul personale, ma ricorda che altre autorizzazioni prevalgono sull'abuso di questa realtà. Ogni cartella utente è "leggibile" da ogni altro utente, ma all'interno di ogni cartella utente vedrai che i singoli elementi sono impostati per avere revocato l'accesso in lettura. Quindi / Users / nome utente / Desktop ha tutti gli utenti impostati su Nessun accesso - Non è una gestione delle autorizzazioni pulita, ma funziona e sei sicuro.
sgelliott,

4
Forse intendeviChalk it up to the oddities of OS X. There are many.
user3019105

stavo guardando un disco da un'altra macchina e sì, i nomi utente vengono rinominati, sono diventato "steve" come utente 502 o forse 501. comunque. la mia teoria è che "staff" avrebbe probabilmente dovuto essere chiamato "macosx" ed è usato dal Finder per fare cose "rooty" per conto degli utenti normali. solo una teoria casuale.
Tomachi,

2
Lo staff di @Tomachi non poteva essere macosx, è stato installato qualche anno prima di OsX quando il sistema era NeXT
user151019

4

Cosa vuoi esattamente ottenere / fare?

Questo comando elenca tutti gli utenti del gruppo staff:

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

fonte

Spiegazione: Il gruppo staff ha l'ID gruppo primario di 20.


Sto cercando di capire perché il gruppo di personale non mostra l'elenco dei suoi membri tramite dscacheutil e l'utilità di directory. Il mio obiettivo principale è recuperare l'elenco dei membri da un gruppo utilizzando C ++, senza chiamare un processo separato. Durante questo processo, mi sono imbattuto nel problema del gruppo che non mostrava i suoi membri e voglio sapere perché è così.
TheDarkKnight

Perché dscacheutil non elenca il gruppo del personale ... Non lo so. developer.apple.com/library/mac/documentation/Darwin/Reference/… È un'implementazione e in qualche modo hanno deciso di non mostrarli.
Bastian Gruber,

2
Ci dispiace, ma dicendo "è un'implementazione" e il collegamento alle pagine man di dscacheutil non risponde alla domanda.
TheDarkKnight

Per C ++, puoi chiamare una funzione shell. Ho trovato questo sito molto utile: blog.earth-works.com/2012/09/13/… Non credo che ci sia alcun motivo per cui non lo mostrino. Hanno creato una funzione e ti manca qualcosa ... cosa dovrei dire. Ti impediscono di mostrarti i membri perché a loro piace?
Bastian Gruber,

2
La chiamata di una funzione shell genera un processo separato. Per vari motivi, questo non è praticabile per il progetto a cui sto lavorando. Sto esaminando i Servizi di identità: developer.apple.com/library/mac/documentation/networking/…
TheDarkKnight
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.