Benutzer im Anmeldebildschirm von Mac OS X Snow Leopard ausblenden

25

Irgendwie habe ich es geschafft, auf meinem Betriebssystem ein passwd für meinen _postgres-Benutzer festzulegen, anstatt es auf die postgres-Rolle zu setzen, die ich als Superuser / Root habe. Wie auch immer, ich habe Probleme damit, dass dieser Benutzer im Kontobereich und im Anmeldebildschirm angezeigt wird, was ich wirklich gerne vermeiden würde. Ich habe einige Dokumente dazu gelesen und das Festlegen des Kennworts *sollte alles sein, was zur Behebung dieses Problems erforderlich ist. Aber nach mehreren erfolglosen Versuchen, dies mit und ohne dscl zu tun, bin ich an einem Punkt angelangt, an dem ich nicht mehr weiß, was ich tun soll.

Ich hätte nicht gedacht, dass es schwierig werden würde, aber ich vermisse etwas. Wie machst du das?

googletorp
quelle
Ein Passwort für Ihren _postgres-Benutzer zu haben, ist überhaupt keine besonders schlechte Idee.
Hasaan Chop
1
In den Postgres-Dokumenten wird das Gegenteil empfohlen. Auf diese Weise können nur Systembenutzer auf Postgres zugreifen, und es gibt ein Kennwort weniger, an das sie sich erinnern müssen / Sicherheitsrisiko.
googletorp
Haben Sie versucht, den Benutzer zu löschen und neu zu erstellen?
Chealion
Ja, das habe ich tatsächlich ein paar Mal versucht. Sie müssen das Passwort irgendwie auf disabled setzen, da es nicht ausreicht, kein Passwort zu haben. Dies ist der Schmerzpunkt, den ich nicht überwinden konnte.
googletorp

Antworten:

31

Die einfachste Methode zum Ausblenden von Systembenutzern (wenn ihre Benutzer-ID <500 ist) im Anmeldefenster besteht darin, den folgenden Befehl auszuführen:

sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool TRUE

Alternativ können Sie nur den Benutzernamen manuell ausblenden, indem Sie ausführen

sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add '_postgres'

Gehen Sie wie folgt vor, um den Eintrag "Andere ..." im Anmeldefenster auszublenden:

sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWOTHERUSERS_MANAGED -bool FALSE
Chealion
quelle
2
Dies ist eine etwas hackige Lösung, die das Problem nicht wirklich "löst", sondern nur die Symptome verbirgt. Ich habe viele verschiedene Systembenutzer für Dinge wie MySQL und so weiter, und sie werden nicht angezeigt, weil ihr Passwort mit '*' markiert ist. Dies ist, was ich versuche, für meine Postgres-Benutzer zu erreichen. Ihre Lösung wäre schlecht, wenn ich andere Benutzer hätte, die ich verstecken wollte, aber mit denen ich mich mit anderen anmelden könnte. Ich möchte wirklich zur Wurzel gehen und dieses wirklich regeln, anstatt das Problem zu verstecken.
googletorp
1
Dies ist eine ausgezeichnete Antwort und hat meine Frage genau beantwortet. Aber Sie haben wahrscheinlich Recht, dass es nicht genau die Frage ist, die Sie gestellt haben.
Bill Michell
3
Die Hide500Users-Flagge scheint unter Lion nicht mehr zu funktionieren. Nur die verbleibenden zwei Befehle funktionieren für Lion
Antony
Beachten Sie, dass der Benutzer auf dem Startbildschirm nicht ausgeblendet wird, wenn FileVault2 aktiviert ist.
James McMahon
12
dscl . create /Users/test
dscl . create /Users/test UniqueID 420
dscl . create /Users/test PrimaryGroupID 420
dscl . create /Users/test UserShell /bin/bash
dscl . create /Users/test NFSHomeDirectory /tmp
dscl . create /Users/test RealName Test
dscl . create /Users/test Password test

Dadurch wird ein Benutzer erstellt, der in sysprefs / Accounts sichtbar ist.

dscl . create /Users/test Password "*"

Dadurch wird der Benutzer ausgeblendet. Stellen Sie sicher, dass Sie das "*" angeben, sonst funktioniert es nicht.

BEARBEITEN : Ich habe es versehentlich geschafft, die Situation von googletorp wiederherzustellen, dass ein Benutzer nicht ausgeblendet werden konnte, indem sein Passwort auf "*" gesetzt wurde. Dieses Mal hatte ich einen Benutzer mit dsimport erstellt, wie folgt:

dsimport /dev/fd/0 /Local/Default I --template StandardUser << EOF
test:*:520:520:Test user:/Users/test:/bin/bash
EOF

In diesem Befehl wird das * jedoch als ein wörtliches Kennwort mit einem Zeichen von verwendet *. Daher erstellt dsimport eine AuthenticationAuthority-Eigenschaft für den Benutzer und setzt die password-Eigenschaft auf den Shadow-Hash von *(der wie ********bei dscl angezeigt wird) Passwörter). Wenn Sie danach versuchen, das Kennwort mit dscl auf "*" zu setzen, setzen Sie das Kennwort weiterhin auf ein Literal *, anstatt das Kennwort zu deaktivieren. Die Lösung besteht darin, die unerwünschte Eigenschaft zu löschen und dann das Kennwort zu deaktivieren:

sudo dscl . delete /Users/test AuthenticationAuthority
sudo dscl . create /Users/test Password "*"

Dadurch wird der Benutzer ausgeblendet.

LaC
quelle
Haben Sie statt der Anführungszeichen versucht, dem Stern zu entkommen? dscl . -create /Users/test Password \*
Eric3
Solange dscl nach "Password" ein Literal "*" sieht, ist alles möglich.
LaC
7

Nur für den Fall, dass Sie keine praktikable Lösung gefunden haben (oder jemand anderes diese Frage von Google findet), können Sie die Shell des Nutzers so einstellen, /usr/bin/false dass er sich nicht anmelden kann, und sie im Anmeldebildschirm und in den Systemeinstellungen ausblenden. Verwenden Sie dazu die folgende Befehlszeile:

sudo dscl . -change /Users/[username] UserShell /bin/bash /usr/bin/false

Und um die Änderung rückgängig zu machen:

sudo dscl . -change /Users/[username] UserShell /usr/bin/false /bin/bash

Wo [username]ist der Name des Benutzers, den Sie verbergen möchten ( _postgresin Ihrem Fall nehme ich an). Ich weiß nicht, warum ich dsclzuerst den alten Wert haben will, aber das sagt die Manpage und es funktioniert ganz gut.

zneak
quelle
1
Diese Lösung ist sehr schlecht, da sie die Shell für diesen Benutzer deaktiviert, genau das, wofür ich sie verwenden möchte. Wenn ich die Datenbank usw. neu starten möchte
googletorp
@googletorp: Du kannst immer noch sudo -s -u _postgresvon einem Admin-Account aus eine Shell als bekommen _postgres; Dies funktioniert auch dann, wenn his auf eingestellt UserShellist /usr/bin/false. Außerdem deaktiviert das Setzen des Passworts auf "kein Passwort", wie Sie es versucht haben, auch das Konto?
Zneak