Wie erstelle ich einen Benutzer ohne Passwort?

22

In OS X ist es möglich, Benutzer ohne Kennwörter zu haben. Wenn Sie sie mit dsclihrem Passwort überprüfen, wird angezeigt als *. Dies wird für Systembenutzer wie Benutzer für Datenbanken wie verwendet mysql, pgsqlusw. Was ist schön darüber ist , dass diese Nutzer nicht angezeigt nicht auf dem Login - Bildschirm und Sie können sie nicht anmelden , ohne sudousw.

Nachdem ich einen solchen Benutzer gelöscht hatte, der einige Dinge ausprobiert hatte, wollte ich es neu erstellen, konnte es aber nicht. Ich könnte es schaffen, einen Benutzer mit einem leeren Passwort zu bekommen, und ich könnte das Passwort auf setzen *. Aber keiner hatte den gleichen Effekt wie oben, da der Benutzer auf meinem Anmeldebildschirm auftauchte.

Wie legen Sie einen solchen Benutzer an?

googletorp
quelle
Unter Linux übergeben Sie das Flag --disabled-password an adduser. Vielleicht hat OS X etwas Ähnliches im Kommandozeilenrepertoire?
BR
Meintest du; Benutzer kann sich ohne Kennwort anmelden oder kann sich überhaupt nicht anmelden, da kein Kennwort festgelegt ist?
Chris Huang-Leaver
1
Ich stelle fest, dass Sie keine Antwort akzeptiert haben. Eine Anforderung, sich aus den verschiedenen xdm-Listen herauszuhalten, besteht darin, eine sehr niedrige Benutzer-ID zu haben. Auf vielen Systemen werden useraddIDs bei 1000 hinzugefügt, und die Login-Manager zeigen keine Benutzer-IDs darunter an, sondern nur alle darüber. Obwohl dies keine Antwort auf diese Frage ist, könnte dies die Lösung des Problems sein. Bitte beachten Sie, dass 1000 willkürlich ist und in Ihrer Distribution niedriger oder höher sein kann. Um das /etc/passwdProblem zu beheben, ändern Sie einfach den Benutzereintrag in , um eine niedrigere Benutzer- ID zu erhalten. Jetzt muss ich eine ähnliche Frage stellen.
Xenoterracide
@xenoterracide: Als ich den Benutzer neu erstellte, gab ich ihm die alte ID. Es war der von mir gelöschte pgsql-Benutzer, dessen ID eine höhere als die von mysql ist. Ich bin mir also sicher, dass dies in diesem Fall keine Auswirkungen hatte , aber trotzdem danke für die Info.
Googletorp

Antworten:

6

Sie können passwd --delete <username>nach dem Anlegen des Benutzers mit ausführen adduser. Danach können Sie sich ohne Eingabe eines Passworts anmelden.

Eugen Anghel
quelle
4
Ich denke, das ist genau das Gegenteil von dem, wonach hier gefragt wird.
Shadur
Zuerst dachte ich, dies sei die richtige (oder beste) Antwort, bis ich die Frage des OP erneut gelesen habe, die für "Systembenutzer" steht und nicht auf dem "Anmeldebildschirm" angezeigt wird. Diese Methode wird auf dem Anmeldebildschirm angezeigt, und Sie können mit dieser Methode "sudo" ausführen.
HidekiAI
3

Ein Benutzer in / etc / passwd mit dem Basisverzeichnis von / dev / null und der Shell von / sbin / nologin kann für Sudo-Befehle verwendet werden, kann jedoch beispielsweise nicht angemeldet werden.

aus meiner / etc / passwd

tcpdump:x:104:441:added by portage for tcpdump:/dev/null:/sbin/nologin

Ich kann mich nur halb daran erinnern, dass dies dazu führt, dass es auch vom XDM-Anmeldebildschirm verschwindet, aber ich verwende XDM nicht mehr, also ist das eine Vermutung :-)

Chris Huang-Leaver
quelle
Dies ist die richtige Antwort, da das OP nach einem Konto gefragt hat, das Sie nicht "sudo" oder "login screen" anzeigen können, indem Sie "/ sbin / nologin" für die Shell festlegen. Eine Sache zu beachten ist, weil das OP nach "Systembenutzer" gefragt hat, sollte auch erwähnt werden, dass "useradd --system" verwendet werden sollte, um eine UID in geringer Anzahl zu erstellen (wie es Portage / Ebuild tut)
HidekiAI
3

Sie können verwenden usermod, um das Passwort zu deaktivieren. Verwenden Sie !statt eines *.

usermod -L <username>

Von der Manpage auf usermod:

-L, --lock Lock a user's password. This puts a '!' in front of the encrypted password, effectively disabling the password.
Jordan Mack
quelle
2

Mit dsclwürde geben

dscl . -passwd /Users/myuser ""
Raffi
quelle
Dies hat, im Gegensatz zu den meisten anderen Antworten, tatsächlich bei mir funktioniert.
GroovyCakes
1

Ich kann mir über OSX nicht sicher sein, aber unter FreeBSD können Sie Folgendes verwenden:

pw add user mymuser -g mygroup -s /nonexistent -h -

Der -an die -hOption übergebene Wert gibt an, dass pwdas Kennwortfeld in master.passwd auf gesetzt werden soll *, um ein Konto ohne Anmeldung zu erstellen. Das Einstellen der Shell ist nicht zwingend erforderlich, vermeidet jedoch eine Shell-Überprüfung von /etc/pw.conf.

gvkv
quelle
1

Wenn Sie das Kennwortfeld für den Benutzer in der passwdDatei leer lassen, funktioniert dies.

Nikhil Mulley
quelle
-1

Unter Linux benutze ich:

sudo useradd -r -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

Die nächste Alternative muss plattformübergreifender sein (falls -rkeine Option verfügbar ist):

sudo useradd -K UID_MIN=100 -K UID_MAX=499 -K GID_MIN=100 -K GID_MAX=499 -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

Hier:

  • Passwort in / etc / shadow wird auf gesetzt *. Ohne wird -p \*es sein!

  • Shell wird /sbin/nologin(Sie können auch verwenden /bin/false, aber ich denke, das /binkann auf einigen Systemen zu spät gemountet werden). Der Benutzer kann sich also nicht anmelden

  • -d Legt das Homedir des Benutzers fest

WICHTIGE NOTIZ

Hier -rwird ein Systembenutzer angelegt:

Dieses Flag wird zum Erstellen eines Systemkontos verwendet. Dies bedeutet , dass ein Benutzer mit einem UIDniedrigeren Wert als dem UID_MINin /etc/login.defs definierten Wert und dessen Kennwort nicht abläuft. Beachten Sie, dass useradd unabhängig von der Standardeinstellung in /etc/login.defs kein Basisverzeichnis für einen solchen Benutzer erstellt . Sie müssen die -mOption angeben, wenn ein Basisverzeichnis für ein Systemkonto erstellt werden soll. Dies ist eine Option, die von Red Hat hinzugefügt wurde .

-rAuf Ihrem System ist möglicherweise keine Option vorhanden. Um einen Systembenutzer zu erstellen, der nicht auf Ihrem Anmeldebildschirm angezeigt wird, können Sie meines Erachtens die -KOption verwenden. Etwas wie: -K UID_MIN=100 -K UID_MAX=499. Sie können folgende Optionen ausprobieren:

-K UID_MAX=$(cat /etc/login.defs | grep ^UID_MIN | awk '{print $2}')

Sie automatisch zu bestimmen UID_MAX, aber ich habe auf OS X. Sie brauchen nicht getestet zu verwenden SYS_UID_MAXfür , UID_MINwenn es in unkommentiert ist /etc/login.defs

Gleiches gilt für GID_MAXund GID_MINfür die Systemgruppen-ID. (Siehe GID_MINund wenn nicht kommentiertSYS_GID_MAX in /etc/login.defs , um als zu verwenden GID_MAX)

Роман Коптев
quelle