Frage Wie kann man verhindern, dass sich ein Benutzer anmeldet, aber "su - user" in Linux zulassen?


Wie können Sie einem Benutzer die Anmeldung mit "su -  Nutzer"aber verhindern, dass der Benutzer sich mit SSH anmeldet?

Ich habe versucht, die Shell auf zu setzen /bin/false aber das wenn ich es versuche su es funktioniert nicht.

Gibt es mehrere Möglichkeiten, Logins nur zu erlauben? su?

Ist SSHs AllowUser der Weg, den man gehen sollte? (Wie würde ich das machen, wenn es der Weg ist)


86
2018-06-09 15:13


Ursprung




Antworten:


Sie können verwenden AllowUsers / ZulassenGruppen wenn Sie nur wenige Benutzer / Gruppen haben, die sich über ssh oder DenyUsers / DenyGroups wenn Sie nur wenige Benutzer / Gruppen haben nicht erlaubt sich einzuloggen. Beachten Sie, dass dies nur die Anmeldung über ssh einschränkt, andere Möglichkeiten der Anmeldung (Konsole, ftp, ...) sind weiterhin möglich. Sie müssen diese Optionen zu Ihrem hinzufügen / etc / ssh / sshd_config Datei für die meisten SSH-Installationen.

Wenn Sie die Login-Shell auf / bin / falsch Sie können verwenden su -s /bin/bash user (ersetzen / bin / bash mit der Schale deiner Wahl)


108
2018-06-09 15:40



Vielen Dank an alle. Ich habe nicht erwartet, 2+ Upvotes zu meiner Frage zu bekommen :) Ich mag die "su -s ..." Konstruieren Sie viel und die Konsole / ftp ist ein guter Punkt. Ich war wirklich auf etwas wie "su-s". - NoozNooz42
Der Trick ist Gold. Ich benutze es die ganze Zeit für Systemkonten, die ich brauche, um Berechtigungen für z. B. Apache, Nobody usw. zu testen. Normalerweise mache ich su-user -s / bin / bash. Das optionale Argument - kann verwendet werden, um eine Umgebung bereitzustellen, die dem entspricht, was der Benutzer erwarten würde, wenn sich der Benutzer direkt angemeldet hätte. - dmourati
Wenn Umgebungsvariablen (z. B. aus / etc / profile) geladen werden sollen, reicht es, einen zusätzlichen Bindestrich zu übergeben: su - -s /bin/bash user - Leons


Wenn Sie immer noch wollen, dass Sie arbeiten, können Sie verwenden sudo -u [username] oder übergeben -s /bin/bash als temporäre Shell. Beide machen dasselbe, wenn sie keine Schale haben /etc/passwd.


13
2018-02-18 10:04





Wenn ein Konto kein Passwort hat (passwd -d Benutzername), sie können sich nicht interaktiv einloggen (Konsole, SSH, etc.). Wenn sie eine gültige Shell haben, su wird immer noch funktionieren. Beachten Sie die "interaktiv", obwohl; Wenn jemand beschließt, ein SSH-Schlüsselpaar für das Konto einzurichten, wird es funktionieren!


7
2018-06-09 15:53



Muss der Benutzer eine gültige Shell haben? Ich bin mir ziemlich sicher, dass Sie sich immer noch in der gleichen ursprünglichen Shell befinden, nachdem Sie sich an einen anderen Benutzer gewendet haben ... Sie loggen sich tatsächlich nicht als anderer Benutzer ein ... Die Shell auf / dev / null zu setzen könnte also funktionieren auch. - Brian Postow
Ja, es braucht noch eine gültige Shell: [root @ localhost ~] # su daemon Dieses Konto ist zur Zeit nicht verfügbar. [root @ localhost ~] # su - daemon Dieses Konto ist zur Zeit nicht verfügbar. (RHEL-System, Daemon-Shell ist / sbin / nologin) - astrostl


Fügen Sie in sshd_config eine Zeile hinzu DenyUser [username]

Beachten Sie, dass dies nicht verhindert, dass sich der Benutzer über die Konsole anmeldet.


3
2018-06-09 15:28



Das sollte sein DenyUsersmit einem 's'. - David G


Zusätzlich zu dem, was oben erwähnt wurde (das Benutzerpasswort deaktivieren und / oder nicht setzen), kann das Modul pam_access (siehe Manpage auf pam_access und access.conf) verwendet werden, um den Login-Zugriff zu steuern.


2
2017-09-27 22:16





wie andere gesagt haben;

DenyUser username oder DenyGroup groupname im sshd_config würde Schlüsselpaar / Passwort-Login über SSH verhindern.

obwohl ich normalerweise so etwas mache AllowGroup ssh oder etwas in dieser Richtung, und fügen Sie explizit Personen hinzu, die SSH-Zugriff auf diese Gruppe benötigen.

dann kannst du tun, was andere gesagt haben: passwd -d username um das Benutzerpasswort zu löschen, damit sie sich nicht an der Konsole oder auf andere Weise anmelden können. oder noch besser passwd -l username um den Account zu "sperren". Es ist möglich, dass ssh den Zugriff auf ein gesperrtes Konto verweigert, sogar mit Schlüsseln, aber ich bin nicht positiv.


1
2018-06-09 16:15



Mit ssh können Sie sich mit der Schlüsselauthentifizierung auch dann anmelden, wenn das Kontopasswort gesperrt ist. - Richard Holloway
Gut zu wissen, danke für die Klarstellung ... - cpbills


Wie ich in einem Kommentar erwähnt habe, denke ich, dass Sie immer noch einen Account mit einer ungültigen Shell haben können. Also, wenn Sie die Shell des Benutzers auf / dev / null oder was auch immer die Shell von bin ist, sollten Sie in der Lage sein, noch in diesem Benutzer su ... aber jeder Versuch, sich in irgendeiner Weise einzuloggen, wird Sie wieder verlassen ...


1
2018-06-09 16:26





editieren Sie / etc / shadow indem Sie hinzufügen! an den Anfang des Passwort-Hash.

username:!<hash>:#####:#:#####:#:::

Wenn eine neue Installation gesichert wird, ist dies das erste, was ich nach der Installation von sudo tue, damit niemand den root-Benutzer verwenden kann, um sich am System anzumelden. Sudo-Benutzer können immer noch als root-Benutzer ausgeführt werden.


1
2017-12-31 01:38





Geben Sie kein Passwort für den Benutzer an, der sich nicht anmelden oder löschen darf.

# passwd -d myuser

0
2018-06-09 15:50





Angenommen, Sie möchten nur aus dem root-Konto su-Benutzer und deaktivieren alle anderen Zugriff:

Benutze dies (als root laufen):

usermod -e 1 -L user

Dies deaktiviert die Passwort-Anmeldung (wie viele andere Antworten empfohlen haben), aber es läuft auch das Konto ab. Sie können sich nicht bei einem abgelaufenen Konto anmelden, z. mit SSH-Tasten. Du kannst immernoch su user, obwohl eine Benachrichtigung angezeigt wird, dass das Konto abgelaufen ist.


0
2017-11-18 13:49