Ausblenden von Benutzern auf dem Mac OS X Snow Leopard-Anmeldebildschirm

30714
googletorp

Irgendwie habe ich es geschafft, ein passwd für meinen _postgres-Benutzer in meinem Betriebssystem festzulegen, anstatt es auf die postgres-Rolle zu setzen, die ich als Superuser / root habe. Wie auch immer, seitdem habe ich Probleme damit, dass dieser Benutzer im Kontobereich und auf dem Anmeldebildschirm auftaucht, was ich wirklich vermeiden möchte. Ich habe einige Dokumente zu diesem Thema durchgelesen und es *sollte alles sein, um dieses Problem zu beheben. Aber nach mehreren Versuchen mit und ohne dscl ohne Erfolg, bin ich an einem Punkt angelangt, an dem ich nicht mehr weiß, was ich tun soll.

Ich hätte nicht gedacht, dass es nicht einmal schwer sein würde, aber ich vermisse natürlich etwas, wie macht man das?

25
Ein Passwort für Ihren _postgres-Benutzer zu haben ist keine besonders schlechte Idee. Hasaan Chop vor 14 Jahren 0
Die Postgres-Dokumente empfehlen tatsächlich das Gegenteil, so dass nur Systembenutzer auf Postgres zugreifen können, und es gibt ein Kennwort, das nicht zu beachten ist. googletorp vor 14 Jahren 1
Haben Sie versucht, den Benutzer zu löschen und neu zu erstellen? Chealion vor 14 Jahren 0
Ja, das habe ich schon ein paar Mal versucht. Sie müssen das passwd irgendwie deaktivieren, da es nicht ausreicht, ein passwd zu haben. Dies ist der Schmerzpunkt, den ich nicht überwinden konnte. googletorp vor 14 Jahren 0

3 Antworten auf die Frage

31
Chealion

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 den Benutzernamen manuell ausblenden, indem Sie ihn ausführen

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

So blenden Sie den Eintrag "Others ..." im Anmeldefenster aus, falls erforderlich:

sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWOTHERUSERS_MANAGED -bool FALSE 
Dies ist eine etwas gehackte Lösung und "löst" das Problem nicht wirklich, es versteckt nur die Symptome. Ich habe viele verschiedene Systembenutzer für Sachen wie mysql und whatnot, und sie werden nicht angezeigt, weil ihr Passwort als '*' markiert ist. Dies ist, was ich für meinen Postgres-Benutzer erreichen möchte. Ihre Lösung wäre schlecht, wenn ich andere Benutzer hätte, die ich verstecken möchte, sich aber mit anderen Benutzern einloggen können. Ich würde wirklich gerne zur Wurzel gehen und das Problem beheben, anstatt das Problem zu verbergen. googletorp vor 14 Jahren 2
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 vor 14 Jahren 1
Hide500Users-Flagge scheint unter Löwen nicht mehr zu funktionieren. Nur die verbleibenden zwei Befehle funktionieren für Lion Antony vor 12 Jahren 3
Beachten Sie, dass der Benutzer auf dem Start-Startbildschirm nicht ausgeblendet wird, wenn FileVault2 aktiviert ist. James McMahon vor 8 Jahren 0
12
LaC
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 "*" 

Dies verbirgt den Benutzer. Stellen Sie sicher, dass Sie das "*" angeben, sonst funktioniert es nicht.

EDIT : Ich habe es versehentlich geschafft, Googletorps Situation wiederherzustellen, einen Benutzer nicht verstecken zu können, indem er sein Kennwort auf "*" gesetzt hat, und ich habe herausgefunden, wie man das Problem beheben kann. 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 aus einem Zeichen bestehendes wörtliches Kennwort von repräsentiert. *Daher erstellt dsimport eine AuthenticationAuthority-Eigenschaft für den Benutzer und legt die password -Eigenschaft auf den Shadow-Hash von fest *(der wie ********in dscl wie bei allen angezeigt wird Passwörter). Wenn Sie versuchen, das Kennwort mit dscl auf "*" zu setzen, wird das Kennwort immer auf ein Literal gesetzt *, anstatt das Kennwort zu deaktivieren. Die Lösung besteht darin, die unerwünschte Eigenschaft zu löschen und anschließend das Kennwort zu deaktivieren:

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

Dies verbirgt den Benutzer.

Haben Sie statt der Anführungszeichen versucht, dem Stern zu entkommen? `dscl. -create / Benutzer / Testkennwort \ * ` Eric3 vor 13 Jahren 0
Solange dscl nach "Password" ein wörtliches "*" sieht, ist alles möglich. LaC vor 13 Jahren 0
7
zneak

Nur für den Fall, dass Sie keine tragfähige Lösung gefunden haben (oder falls jemand anderes diese Frage von Google findet), können Sie die Shell des Benutzers so einstellen, /usr/bin/false dass er sich nicht anmeldet, und der Login-Bildschirm und die Systemeinstellungen werden ausgeblendet. 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 ausblenden möchten ( _postgresin Ihrem Fall nehme ich an). Ich weiß nicht, warum dsclder alte Wert zuerst gewünscht wird, aber das sagt die Manpage, und sie funktioniert ganz gut.

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 etc. neu starten möchte googletorp vor 14 Jahren 1
@googletorp: Sie können noch sudo -s -u _postgres von einem Administratorkonto aus ausführen, um eine Shell als _postgres zu erhalten. Dies funktioniert auch, wenn seine `UserShell` auf` / usr / bin / false` gesetzt ist. Außerdem setzt das Festlegen des Kennworts auf "kein Kennwort", wie Sie es versucht haben, auch das Konto deaktiviert? zneak vor 14 Jahren 0