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
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top