Wie kann ich alle Benutzerkonten im Terminal auflisten?

74

Wie kann ich alle lokalen Benutzerkonten in Terminal auflisten (ob angemeldet oder nicht?)? Die Befehle usersoder whonicht diese Informationen. OS X-Version ist 10.6.8.

Ich habe diesen vorgeschlagenen Befehl gesehen - dscacheutil -q group

Es werden jedoch nur Domänenbenutzergruppen und nicht lokale Konten aufgelistet.

Codecowboy
quelle
1
Als langjähriger AIX-Benutzer vermisse ich die Systemverwaltungsbefehle, die sie in ihr Unix eingebaut haben. lsuser wäre nett, für diesen Zweck zu haben.
bmike

Antworten:

68

Wie wäre es mit

dscacheutil -q user | grep -A 3 -B 2 -e uid:\ 5'[0-9][0-9]'
Kevin
quelle
Ich mag diese Option. Es werden jedoch eine Reihe von Konten zurückgegeben, die mit einem Unterstrich beginnen. Wie kann man das herausfiltern? zB _softwareupdate, _mysql
codecowboy
9
Pipe das Ergebnis durch grepdscl . list /Users | grep -v ^_.*
user151019
Sehr cool! Ich muss mich daran erinnern.
Daviesgeek
5
Dies ist auch so einfach, sich in Erinnerung zu rufen.
Kelly
41

Probier diese. Ich habe es benutzt, um einen versteckten Account zu finden.

dscl . list /Users | grep -v '^_'
user41486
quelle
3
Genau das hat @Mark hier gesagt .
Emil
Wozu dienen versteckte Konten?
SuperUberDuper
Verwenden Siedscl . list /Users UniqueID | grep -v '^_'
Marián Černý
Was ist, wenn der Benutzer nicht da ist?
Cameronroe
10

Benutzerkonten seit 10.6 werden von OpenDirectory verwaltet. Die Backend-Dateien für OpenDirectory-Benutzer finden Sie hier:

/var/db/dslocal/nodes/Default/users

Bei der Ausführung ls *in diesem Verzeichnis werden alle im System registrierten lokalen Benutzer aufgelistet. Beim Ausführen plutil -p <file>.plistkönnen Sie einige Eigenschaften für das angegebene Benutzerkonto (dh den aktuellen Pfad des Basisverzeichnisses) lesen.

Das ist ziemlich undokumentiert, deshalb akzeptiere ich Ablehnungen. Mit dieser Methode kann jedoch ein System überprüft werden, das nicht ausgeführt wird und für das der Benutzer nur ein Offline-Image hat.

antonone
quelle
Ich mag es, aber es erforderte sudo / root, um zu arbeiten, bekam std admin user einen Berechtigungsfehler. dsclFunktioniert für Standardadministratoren.
JL Peyret
6

dscacheutil gibt mehr als nur lokale Benutzer zurück, z. B. werden alle Benutzer, für die ich Directory Services abgefragt habe, ebenfalls angezeigt.

Ich fand das nützlicher:

dscl . list /Users | grep -v "^_"

Obwohl es gibt auch Leute wie daemon, nobodyund root.

chymb
quelle
4

JMTCW zum erneuten Erstellen eines befehlszeilenfreundlichen /etc/passwdÄquivalents (wenn auch nicht in derselben Reihenfolge):

dscacheutil -q user |
    paste -d " "  - - - - - - - - |
    sed 's/^name: //;s/ [^[:space:]]*: /:/g'

Oder wenn Sie eine durch Leerzeichen getrennte Ausgabe bevorzugen (das Parsen von GECOS-Feldern ist jedoch etwas komplizierter:

dscacheutil -q user |
    cut -d: -f2 |\
    paste -d " "  - - - - - - - -
Don
quelle
2

Wenn keine Benutzer-Home-Verzeichnisse verschoben wurden ls /users, reicht dies aus. Außer es werden auch Verzeichnisse wie 'Shared' aufgelistet.

iskra
quelle
2
Mach das niemals. Es gibt viel mehr als nur das Shared, was da sein kann.
Hamstergene
-3

Sie können auch Folgendes eingeben:

whoHier erfahren Sie, wer angemeldet ist und woher sie kommen. Nützlich, wenn Sie jemanden suchen, der sich physisch im selben Gebäude wie Sie oder an einem anderen bestimmten Ort befindet.

wHier erfahren Sie, wer angemeldet ist und was sie tun. Besonders nützlich: der 'Leerlauf'-Teil. So können Sie sehen, ob sie tatsächlich da sitzen und gerade auf ihren Tastaturen tippen.

Jordan
quelle