
Ich habe diese beiden Befehle im Terminal ausgeführt:
users
Und
dscl . -read /Users/
und dann werden mir zwei verschiedene Ergebnisse angezeigt. Das zweite gab mir eine lange Liste, während das erste nur meinen Benutzernamen auf dem Mac anzeigte.
Wenn ich bei Google nach „Benutzer auf dem Mac auflisten“ suche, wird mir meist gesagt, dass ich die zweite Methode verwenden soll. Wenn ich jedoch „man users“ ausführe, wird mir angezeigt, dass dieser Befehl dazu dient, „aktuelle Benutzer aufzulisten“.
Können Sie mir die Unterschiede erklären?
Außerdem: Wie führe ich einen Befehl als MySQL-Benutzer aus? Der folgende Befehl hat nicht funktioniert:
mkdir mysqldir --user mysql
Antwort1
dscl . -read /Users/
druckt nichts besonders Interessantes; Sie meinen wahrscheinlich dscl . -ls /Users
, das eine Liste der auf Ihrem Computer definierten Benutzerkonten ausgibt (einschließlich einer großen Anzahl normalerweise ausgeblendeter Systemkonten). users
druckt dagegen eine Liste der Benutzerdie derzeit angemeldet sindauf Ihrem Computer (normalerweise nur Sie).
Zu deiner zweiten Frage: Du kannst den sudo
Befehl verwenden, um Befehle als anderer Benutzer auszuführen (z. B. sudo -u _mysql mkdir mysqldir
). Beachte, dass du dafür Administratorrechte benötigst und zur Überprüfung dein Passwort eingeben musst.
Antwort2
Holen Sie sich eine Liste aller Benutzer (nur ihre Kurznamen):
dscl . -list /Users
Erhalten Sie detaillierte Benutzerinformationen zu einem bestimmten Benutzer:
dscl . -read /Users/<username>
Holen Sie sich einen bestimmten Wert in den Informationen eines Benutzers:
dscl . -read /Users/<username> <key>
Beispiele für <key>
sind RecordName
, RealName
, UniqueID
, und NFSHomeDirectory
.
Erhalten Sie detaillierte Benutzerinformationen überalleBenutzer:
dscl . -readall /Users
Erhalten Sie einen bestimmten Wert inalleBenutzerinformationen:
dscl . -readall /Users <key>
Hoffentlich bemerken Sie den Unterschied zwischen -list
und -read
. Weitere Vorteile: -plist
Gibt als XML aus, -search
ermöglicht Ihnen die Angabe eines Schlüssels und Werts und Sie erhalten eine Ausgabe, die angibt, wo sich dieser Wert befindet.
2rs2ts:~/ $ dscl . -search /Users RealName "Andrew Garrett" [12:04:07]
2rs2ts RealName = (
"Andrew Garrett"
)
2rs2ts:~/ $ dscl -plist . -read /Users/nobody [12:05:29]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>dsAttrTypeStandard:AppleMetaNodeLocation</key>
<array>
<string>/Local/Default</string>
</array>
<key>dsAttrTypeStandard:GeneratedUID</key>
<array>
<string>FFFFEEEE-DDDD-CCCC-BBBB-AAAAFFFFFFFE</string>
</array>
<key>dsAttrTypeStandard:NFSHomeDirectory</key>
<array>
<string>/var/empty</string>
</array>
<key>dsAttrTypeStandard:Password</key>
<array>
<string>*</string>
</array>
<key>dsAttrTypeStandard:PrimaryGroupID</key>
<array>
<string>-2</string>
</array>
<key>dsAttrTypeStandard:RealName</key>
<array>
<string>Unprivileged User</string>
</array>
<key>dsAttrTypeStandard:RecordName</key>
<array>
<string>nobody</string>
</array>
<key>dsAttrTypeStandard:RecordType</key>
<array>
<string>dsRecTypeStandard:Users</string>
</array>
<key>dsAttrTypeStandard:SMBRID</key>
<array>
<string>501</string>
</array>
<key>dsAttrTypeStandard:UniqueID</key>
<array>
<string>-2</string>
</array>
<key>dsAttrTypeStandard:UserShell</key>
<array>
<string>/usr/bin/false</string>
</array>
</dict>
</plist>
Natürlich können Sie die Manpages lesen, um weitere Informationen zu erhalten.
Antwort3
Der Befehl „Benutzer“ listet nur die aktuell angemeldeten Benutzer auf.
BESCHREIBUNG: Benutzer listet die Anmeldenamen der Benutzer, die sich aktuell im System befinden, in sortierter Reihenfolge und durch Leerzeichen getrennt in einer einzigen Zeile auf.