Liste der UIDs / Namen von Systemeinstellungen> Konten
Frage
Wie kann ich ein Array mit UID und Namen erhalten?
Ich konnte von 0 bis 99999 iterieren und a machen getpwnam()
. Die meisten Maschinen haben jedoch weniger als 5 Konten, daher ist dies nicht optimal. Ich weiß nicht, welches Framework dafür verantwortlich ist, und daher habe ich keine Ahnung, wonach ich suchen soll.
Gibt es eine optimalere Lösung, die die Konten durchqueren kann?
EDIT: Gleich nachdem ich gepostet habe, habe ich entdeckt getpwent()
Für das Durchqueren von Konten.
setpwent();
struct passwd *pw;
while ((pw = getpwent())) printf("%d\n", pw->pw_uid);
endpwent();
Dies zeigt jedoch nicht, ob ein Konto ein Systempräferenzenkonto ist oder nicht.
Wie erhält man also die Systemeinstellungen für Systempräferenzen?
Bearbeiten: Ich habe das Befehlszeilenäquivalent davon gefunden, die dscl
Befehl.
prompt> dscl . -list /Users UniqueID
_mysql 74
_postfix 27
_spotlight 89
_sshd 75
_windowserver 88
_www 70
daemon 1
johndoe 501
nobody -2
root 0
Lösung
Verwenden getgrnam("staff")
Um einen Gruppenaufzeichnung für die Staff Group zu erhalten. Das gr_mem
Obwohl das Mitglied von der Arbeiter nicht im Detail erläutert wird, scheint es ein Array von Benutzernamen zu sein, die von einem Nullzeiger gekündigt wurden.
Um herauszufinden, welche Benutzer Administratoren sind, tun Sie dasselbe mit der Admin -Gruppe.