Deaktivieren Sie die Anmeldung eines Benutzers, ohne das Konto zu deaktivieren

87

Angenommen, ich erstelle mit dem adduserBefehl einen Benutzer namens "bogus" . Wie kann ich sicherstellen, dass dieser Benutzer KEINE brauchbare Anmeldeoption ist, ohne das Konto zu deaktivieren? Kurz gesagt, ich möchte, dass das Konto über erreichbar ist su - bogus, aber ich möchte nicht, dass es über eine reguläre Anmeldeaufforderung erreichbar ist.

Beim Durchsuchen muss ich anscheinend das Passwort dieses Benutzers deaktivieren, aber das passwd -d bogushat nicht geholfen. In der Tat machte es die Sache noch schlimmer, weil ich mich jetzt bei fälschlicherweise anmelden konnte, ohne überhaupt ein Passwort einzugeben.

Gibt es eine Möglichkeit, reguläre Anmeldungen für ein bestimmtes Konto zu deaktivieren?

Hinweis: Um klar zu sein, ich weiß, wie man einen Benutzer aus den Menüoptionen von grafischen Anmeldebildschirmen wie gdm entfernt, aber diese Methoden verbergen einfach das Konto, ohne die Anmeldung tatsächlich zu deaktivieren. Ich suche nach einer Möglichkeit, die reguläre Anmeldung vollständig zu deaktivieren, einschließlich Textmodus.

Malabarba
quelle
2
Ihr -dist die Flagge, um das Passwort zu löschen. Das ist etwas anderes als das Deaktivieren (als Sperren bezeichnet, siehe Tschads Antwort).
Caleb
1
Sie möchten sie wahrscheinlich vollständig deaktivieren: unix.stackexchange.com/questions/7690/… Siehe auch diese Frage an Ubuntu: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Simon Woodside

Antworten:

102
passwd -l user

ist was du willst.

Dadurch wird das Benutzerkonto gesperrt. Aber du wirst immer noch dazu in der Lage sein

su - user

aber du musst su - userals root.

Alternativ können Sie dasselbe tun, indem Sie !dem Kennwort des Benutzers in ein voranstellen /etc/shadow(dies geschieht alles passwd -lhinter den Kulissen). Und passwd -uwird dies rückgängig machen.

Chad Feller
quelle
27
Wenn passwd -lSie diese Option verwenden, sollten Sie sich darüber im Klaren sein, dass sich der Benutzer mit einem anderen Authentifizierungstoken (z. B. einem SSH-Schlüssel) anmelden kann.
20.
2
In meiner Antwort weiter unten finden Sie eine empfohlene Lösung, wie Sie dies vermeiden können.
Jörg Gottschlich
2
Dies funktioniert nicht auf Ubuntu 16.04. Das Ablaufdatum wird geändert und der Benutzer wird nicht mehr zugelassen.
Merlin
1
Entspricht dies der --disabled-passwordOption für adduser? Erzielt das Erstellen eines Benutzers ohne diesen Benutzer --disabled-passwordund das anschließende Ausführen passwd -lauf diesem Benutzer dasselbe Ergebnis wie das Ausführen addusermit diesem Benutzer --disabled-password?
Haridsv
39

Die Manpage von passwd(1)sagt über passwd -l:

Beachten Sie, dass das Konto dadurch nicht deaktiviert wird. Der Benutzer kann sich möglicherweise weiterhin mit einem anderen Authentifizierungstoken (z. B. einem SSH-Schlüssel) anmelden. Um das Konto zu deaktivieren, sollten Administratoren usermod --expiredate 1 verwenden (dies setzt das Ablaufdatum des Kontos auf den 2. Januar 1970).

Damit

usermod --expiredate 1 [LOGIN]

scheint mir die richtige Möglichkeit zu sein, ein Benutzerkonto zu deaktivieren, das ein Benutzer nicht mehr verwenden kann (z. B. weil er die Firma verlassen hat).

Jörg Gottschlich
quelle
4
Blockiert auf meinem CentOs 6.3 passwd -ldie sshVerbindung für einen Benutzer und usermod --expiredate 1nicht!
fduff
1
Unter CentOS 7.4 passwd -lwerden sshVerbindungen für einen Benutzer nicht mehr blockiert und usermod --expiredate 1 userblockiert. Per können man passwdSie auch verwenden chage -E 0 user, um einen Benutzer zu blockieren. Nach der Bewerbung usermododer chageich kannsudo su user
user12345
usermod --expiredate 0 [LOGIN]funktioniert auch, es setzt das Ablaufdatum auf den 1. Januar 1970, während eine 1 dies auf den 2. Januar 1970 setzt.
slm
"Der Wert 0 sollte nicht verwendet werden, da er entweder als Konto ohne Ablaufdatum oder als Ablaufdatum am 1. Januar 1970 interpretiert wird." - Schatten (5)
Johannes
28

Es gibt zwei Methoden, um zu verhindern, dass sich ein Benutzer anmelden kann:

  1. Sie können den Benutzer durch Bearbeiten sperren /etc/passwd
  2. durch direktes Ausgeben des passwdBefehls mit dem -lSchalter

Im zweiten Fall kann sich der Benutzer mit einem anderen Authentifizierungstoken (z. B. einem SSH-Schlüssel) anmelden.

Methode 1

  1. Finden Sie heraus, wo sich nologin befindet: / bin / nologin oder / bin / sbin / nologin
  2. Öffnen Sie ein Terminal und melden Sie sich als root an
  3. Art vi /etc/passwd

Jetzt sind Sie in der passwdDateipresse Ins, um die Datei zu bearbeiten.

Ändern Sie die folgende Zeile mit der nologinOption ( /bin/bashbedeutet, dass sich der Benutzer anmelden kann).

root:x:0:0:root:/root:/bin/bash

dazu. nologinbedeutet, dass der Benutzer sich nicht anmelden kann.

root:x:0:0:root:/root:/bin/nologin

(oder mit / bin / sbin / nologin)

  1. Schließen Sie den vi Esc :wq

Methode # 2

So sperren Sie den Benutzer: passwd -l username

So entsperren Sie den Benutzer: passwd -u username

Mansur Ul Hasan
quelle
1
Auf einem Ubuntu 14.04 System fand ich /usr/sbin/nologinstatt /bin/nologin.
Dennis Williamson
7

Es ist ganz einfach, einige Änderungen an der /etc/passwdDatei vorzunehmen .

Sie müssen lediglich die Shell ändern, was in der Regel standardmäßig der /bin/bashFall ist, dh Sie können sich mit dieser Shell anmelden und sie in /bin/nologinoder ändern /bin/false. Es ist ratsam, dies zu ändern, /bin/nologinda /bin/falsees veraltet ist.

PRABHAT PARASHAR
quelle
4

Stellen Sie /bin/falseals eine Muschel in/etc/passwd

danadam
quelle
18
Wenn man die Shell auf setzt /bin/false, verhindert man, dass su als dieser Benutzer verwendet wird. Darüber hinaus /bin/falseerzeugt using weder einen Fehler noch einen anderen Hinweis darauf, was gerade schief gelaufen ist - in Fällen, in denen verhindert werden soll, dass auch su verwendet wird, um eine Shell als dieser Benutzer zu erhalten, sollte die Shell in die geändert werden, /sbin/nologindie einen Fehler erzeugt.
HedgeMage
8
Nein, das suist immer noch möglich , für Benutzer mit /bin/falseSchalen in passwd- nur die Option --shell: su - --shell /bin/sh bogus.
Matej Kovac
1
/usr/sbin/nologinhat den gleichen Effekt wie /bin/false, zeigt aber auch eine nützliche Informationsmeldung an.
Rörd
0

Wenn wir den Benutzer mit dem passwd -l userBefehl sperren , wird " !!" in der /etc/shadowDatei angezeigt . Es ist jedoch weiterhin möglich, vom Root-Konto zu einer Benutzer-Shell zu wechseln, jedoch nicht von einer anderen normalen Benutzer-Anmeldeshell zum Benutzerkonto.

Wir können das Konto auch deaktivieren, indem wir /bin/nologinoder /bin/falsein einer /etc/passwdDatei bereitstellen . Der Benutzer kann sich möglicherweise nicht anmelden.

Sushil Musande
quelle
-1

Sie können den Befehl verwenden

usermod -s /sbin/nologin username
Geschenk Richard Chigonera
quelle