Wie deaktiviere ich ein Konto vollständig?

48

Wie deaktiviere ich ein Konto vollständig? passwd -lermöglicht es niemandem, sich mit einem Kennwort bei einem Konto anzumelden, Sie können sich jedoch weiterhin über private / öffentliche Schlüssel anmelden. Wie würde ich den Account komplett deaktivieren? Als Quickfix habe ich die Datei in umbenannt authorized_keys_lockme. Gibt es eine andere Art und Weise?

Braiam
quelle
3
Planen Sie, es irgendwann wieder zu aktivieren? Systemsperren? Wenn nicht, würde ich einfach das Konto entfernen.
Ken

Antworten:

59

Der richtige Weg ist laut usermod(8):

usermod --lock --expiredate 1970-01-02 <username>

(Tatsächlich kann das Argument "to" --expiredateein beliebiges Datum vor dem aktuellen Datum im Format sein YYYY-MM-DD.)


Erläuterung:

  • --lockSperrt das Passwort des Benutzers. Eine Anmeldung mit anderen Methoden (z. B. öffentlichem Schlüssel) ist jedoch weiterhin möglich.

  • --expiredate YYYY-MM-DDDeaktiviert das Konto zum angegebenen Datum. Laut man shadow 51970-01-01 ist ein mehrdeutiger Wert und darf nicht verwendet werden.

Ich habe das auf meiner Maschine getestet. Nach Ausführung dieses Befehls ist weder eine Anmeldung mit Kennwort noch mit einem öffentlichen Schlüssel möglich.


Um das Konto zu einem späteren Zeitpunkt wieder zu aktivieren, können Sie Folgendes ausführen:

usermod --unlock --expiredate '' <username>
Christoph Wurm
quelle
7
Verwenden Sie den 01.01.1970 nicht, da dadurch das Feld / etc / shadow auf 0 gesetzt wird. Shadow (5) Der Wert 0 sollte nicht verwendet werden, da er entweder als Konto ohne Ablauf oder als Ablauf für interpretiert wird 1. Januar 1970. Bitte verwenden Sie: usermod --lock --expiredate 1970-02-02 <Benutzername>
Marcus Maxwell
4
Es wäre großartig, wenn Sie auch die Methode zum Umkehren dieses Vorgangs bereitstellen könnten. Sieht aus wie usermod --unlock --expiredate '' usernamewird es tun.
Bob
3
Hinzufügen zu dem, was @MarcusMaxwell schrieb: Die Manpage für usermodsagt:Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1.
Zero3
1
Warum --expiredate 1reicht das allein nicht aus?
Thomas Jensen
Scheint sudo su usernameaber mit einem anderen Account zu funktionieren.
Xuhdev
10

Sperren Sie das Passwort und ändern Sie die Shell auf /bin/nologin.

sudo usermod --lock --shell /bin/nologin username

(Oder genauer gesagt sudo usermod -L -s /bin/nologin username.)

mattdm
quelle
Wie ändere ich die Shell in / bin / nologin?
5
@mattdm Dies ist keine vollständige Lösung, da ein Benutzer immer noch einen auszuführenden Befehl angeben kann. Beispielsweise ssh username@hostname /bin/bashwird der Benutzer unabhängig von der Standard-Shell eine Bash-Eingabeaufforderung erhalten.
Phunehehe
4
@phunehehe - hast du es versucht? Im Protokoll wird angezeigt, dass "Benutzer [Benutzername] nicht zulässig ist, da shell / bin / nologin nicht vorhanden ist".
Mattdm
2
Soweit ich weiß, ist das Verhalten der ungültigen Shell nicht wirklich dokumentiert. Andererseits steht auf der Manpage, dass das Passwort einen führenden Namen hat !! Unter Linux wird der Account als gesperrt behandelt, was jedoch nicht funktioniert. Also, weißt du, Dokumentation und Realität sind sowieso nur ungefähre Übereinstimmungen. :)
mattdm
2
sudo chsh -s /bin/nologinwäre besser als bearbeiten /etc/passwdvon hand. Auf einigen Systemen ist es auch so /sbin/nologin.
Mikel
3

Hier ist ein anderer einfacher Weg. Sie können festlegen, dass das Benutzerkonto abgelaufen ist. Dadurch werden sowohl kennwortbasierte als auch ssh-schlüsselbasierte Anmeldungen für das Konto verhindert, das Kennwort wird jedoch nicht berührt.

So sperren Sie das Konto:

# chage -E 0 username

Das Benutzerkonto 'Benutzername' wird auf dem System gesperrt. Führen Sie die folgenden Schritte aus, um das Benutzerkonto wieder zu aktivieren.

So entsperren Sie das Konto:

# chage -E -1 username

Das Benutzerkonto "Benutzername" wird auf Ihrem System mit demselben Kennwort wie zuvor wieder aktiviert . Die Binärdatei 'chage' ist Teil des Pakets shadow-utils unter Red Hat Linux oder des Pakets passwd unter Debian Linux.

miklosq
quelle
3

Ich habe nicht genügend Repräsentanten, um die Antwort von Legate zu kommentieren, aber ich wollte mitteilen, dass diese Antwort uns bei einem anderen Anwendungsfall geholfen hat:

1.) Bei dem betreffenden Konto handelt es sich um ein lokales Dienstkonto, auf dem eine Anwendung ausgeführt wird, und nicht um ein Endbenutzerkonto.

2.) Endbenutzer ssh in sich selbst und sudo /bin/su <user>um Benutzer zu werden und die Anwendung aufgrund einer Audit-Trail-Anforderung zu verwalten, dass das Dienstkonto keine direkte Anmeldefähigkeit haben kann.

3.) Das Dienstkonto muss eine gültige Shell haben ( /bin/bashnicht /sbin/nologin), da eine Enterprise Scheduling Platform (Agent wird lokal als Root ausgeführt) in der Lage su - <user>und nicht in der su -s /bin/bash <user>Lage sein muss, dass eine vollständige Shell funktioniert, und Jobs remote ausgeführt werden müssen für größere Batch-Vorgänge, die mehrere Server und Datenbanken umfassen.


Also ...

passwd -l <user>
Erfüllt keine Einschränkungen, da die Authentifizierung mit öffentlichem Schlüssel PAM umgeht und dennoch die direkte Anmeldung ermöglicht.

usermod -s /sbin/nologin <user>
Erfüllt keine Einschränkungen, da der Unternehmens-Scheduler abbricht

usermod --lock --expiredate 1970-01-01 <user>
Das ist unser Gewinner. Die Remote-Anmeldung ist deaktiviert, Root kann sie jedoch weiterhin ausführen su <user>, ebenso wie andere Benutzer über, sudodamit der Scheduler ordnungsgemäß funktioniert und berechtigte Endbenutzer bei Bedarf das Zieldienstkonto werden können.

Danke für die Lösung!

user1880028
quelle
1

Zum vollständigen Löschen verwenden Sie userdel.

Bitte beachten Sie, dass beim Löschen eines Kontos die Gefahr besteht, dass die Benutzer-ID weiterhin im Dateisystem verwendet wird und ein neuer Benutzer den Besitz dieser Dateien erbt, wenn er unter derselben Benutzer-ID eingeht.

Sie möchten den Eigentümer aller Dateien ändern, deren Eigentümer der gelöschte Benutzer ist.

Wenn Sie den Benutzer später wieder hinzufügen möchten, speichern Sie seine Zeilen von /etc/passwd(und unter Solaris /etc/shadow) in temporären Dateien wie /etc/passwd_deleted.

Auf diese Weise können Sie beim erneuten Hinzufügen dieselbe Benutzer-ID und dasselbe Kennwort verwenden (das in einer der oben genannten Dateien verschlüsselt ist).

Haftungsausschluss: Ich habe UNIX selbst gelernt, daher wäre ich nicht überrascht, wenn es eine bessere Möglichkeit gibt, den Benutzer vorübergehend zu deaktivieren. Tatsächlich weiß ich nicht einmal, um welche privaten / öffentlichen Schlüssel es sich handelt. Ich bin mir auch sicher, dass es einen findBefehl gibt, mit dem die Dateien mit dieser Besitzer-Benutzer-ID gesucht werden können

Bryan Field
quelle
1
google authorized_keys oder versuche dies zu lesen eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html im grunde anstatt ein passwort zu verwenden, lege deinen publuc key in diese datei und wenn du dich mit ssh verbindest, wirst du automatisch eingeloggt wenn der öffentliche mit Ihrem aktuellen privaten Schlüssel