Wie kann ich verhindern, dass sich ein Benutzer anmeldet, aber "su - user" unter Linux zulässt?

93

Wie kann sich ein Benutzer mit " su - user " anmelden, ohne dass sich der Benutzer mit SSH anmeldet?

Ich habe versucht, die Shell auf zu setzen, /bin/falseaber wenn ich es versuche, sufunktioniert es nicht.

Gibt es mehrere Möglichkeiten, nur Anmeldungen über zuzulassen su?

Ist SSH der richtige AllowUserWeg? (Wie würde ich das machen, wenn es der richtige Weg wäre?)

NoozNooz42
quelle

Antworten:

113

Sie können AllowUsers / AllowGroups verwenden, wenn Sie nur wenige Benutzer / Gruppen haben, die sich über ssh anmelden dürfen, oder DenyUsers / DenyGroups, wenn Sie nur wenige Benutzer / Gruppen haben, die sich nicht anmelden dürfen. Beachten Sie, dass dies nur die Anmeldung über ssh einschränkt. Andere Anmeldemöglichkeiten (Konsole, FTP, ...) sind weiterhin möglich. Sie müssen diese Optionen für die meisten ssh-Installationen zu Ihrer Datei / etc / ssh / sshd_config hinzufügen .

Wenn Sie die Login-Shell auf / bin / false gesetzt haben , können Sie sie verwenden su -s /bin/bash user(ersetzen Sie / bin / bash durch die Shell Ihrer Wahl).

Florian Diesch
quelle
Vielen Dank an alle. Ich hatte nicht damit gerechnet, mehr als 2 Stimmen für meine Frage zu bekommen :) Ich mag das "su-s ..." Konstruieren sehr und die Konsole / FTP ist ein guter Punkt. Ich war wirklich hinter so etwas wie "su-s" her.
NoozNooz42
3
Der su-s-Trick ist Gold. Ich benutze es die ganze Zeit für Systemkonten, für die ich Berechtigungen testen muss, z. B. für Apache, für niemanden usw. Normalerweise mache ich su - user -s / bin / bash. Das optionale Argument - kann verwendet werden, um eine Umgebung bereitzustellen, die der vom Benutzer erwarteten Umgebung ähnelt, in der sich der Benutzer direkt angemeldet hat.
Dmourati
2
Wenn Umgebungsvariablen (z. B. aus / etc / profile) geladen werden müssen, reicht ein zusätzlicher Bindestrich aus:su - -s /bin/bash user
Leons
13

Wenn su weiterhin funktionieren soll, können Sie su als temporäre Shell verwenden sudo -u [username]oder -s /bin/bashan su übergeben. Sie tun dasselbe in Abwesenheit einer Muschel /etc/passwd.

Lach
quelle
7

Wenn ein Konto kein Kennwort hat ( passwd -d Benutzername ), können sie sich nicht interaktiv anmelden (Konsole, SSH usw.). Wenn sie eine gültige Shell haben, funktioniert su immer noch. Beachten Sie jedoch "interaktiv"; Wenn jemand beschließt, ein SSH-Schlüsselpaar für das Konto einzurichten, funktioniert es!

astrostl
quelle
Muss der Benutzer eine gültige Shell für su haben? Ich bin mir ziemlich sicher, dass Sie sich immer noch in derselben ursprünglichen Shell befinden, nachdem Sie sich für einen anderen Benutzer angemeldet haben. Sie sind nicht wirklich als der andere Benutzer ANMELDEN. Daher funktioniert es möglicherweise, die Shell einfach auf / dev / null zu setzen auch.
Brian Postow
Ja, es wird noch eine gültige Shell benötigt: [root @ localhost ~] # su daemon Dieses Konto ist derzeit nicht verfügbar. [root @ localhost ~] # su - daemon Dieses Konto ist derzeit nicht verfügbar. (RHEL-System, Daemons Shell ist / sbin / nologin)
Astrostl
3

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

Beachten Sie, dass dies den Benutzer nicht daran hindert, sich über die Konsole anzumelden.

Chris S
quelle
1
Das sollte DenyUsersmit einem 's' sein.
David G
2

Zusätzlich zu den oben genannten Funktionen (Deaktivieren und / oder Nichteinstellen des Benutzerkennworts) kann das Modul pam_access (siehe Manpage unter pam_access und access.conf) zur Steuerung des Anmeldezugriffs verwendet werden.

abz
quelle
1

wie andere gesagt haben;

DenyUser usernameoder DenyGroup groupnamein sshd_configwürde die Anmeldung mit Schlüsselpaar / Passwort über ssh verhindern.

obwohl ich normalerweise so etwas mache AllowGroup sshoder so, und explizit Leute hinzufüge, die SSH-Zugang zu dieser Gruppe benötigen.

Sie können dann wie von anderen gesagt passwd -d usernamevorgehen, um das Benutzerpasswort auszublenden, damit sich die Benutzer nicht an der Konsole anmelden können, oder auf andere Weise. oder noch besser passwd -l username, um das Konto zu "sperren". Es ist möglich, dass ssh den Zugriff auf ein gesperrtes Konto verweigert, auch mit Schlüsseln, aber ich bin nicht positiv.

cpbills
quelle
1
Mit ssh können Sie sich auch dann mit der Schlüsselauthentifizierung anmelden, wenn das Kontokennwort gesperrt ist.
Richard Holloway
1

Wie ich in einem Kommentar erwähnte, denke ich, dass Sie immer noch ein Konto mit einer ungültigen Shell aufladen können. Wenn Sie also die Shell des Benutzers auf / dev / null setzen oder was auch immer die Shell von bin ist, sollten Sie in der Lage sein, sich weiterhin in diesen Benutzer einzuloggen ... Aber jeder Versuch, sich auf irgendeine Weise anzumelden, beendet Sie wieder ...

Brian Postow
quelle
1

editiere / etc / shadow durch Hinzufügen! an den Anfang des Passwort-Hashs.

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

Beim Sichern einer Neuinstallation ist dies das erste, was ich nach der Installation von sudo mache, damit sich niemand mit dem Root-Benutzer oder ssh im System anmelden kann. Sudo-Benutzer können weiterhin als Root-Benutzer ausgeführt werden.

snic.io
quelle
0

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

# passwd -d myuser
François Feugeas
quelle
0

Angenommen, Sie möchten nur einen Benutzer aus dem Root-Konto su und alle anderen Zugriffe deaktivieren:

Verwenden Sie dies (als root ausführen):

usermod -e 1 -L user

Dadurch wird die Kennwortanmeldung deaktiviert (wie in vielen anderen Antworten empfohlen), aber das Konto läuft auch ab . Sie können sich nicht mit einem abgelaufenen Konto anmelden, z. B. mit SSH-Schlüsseln. Sie können es trotzdem su user, obwohl eine Meldung angezeigt wird, dass das Konto abgelaufen ist.

Kunstvollroboter
quelle
0

Zu wissen, welcher Mechanismus am besten ist, hängt von den Anforderungen ab. Wenn Sie die Anforderungen kennen, können Sie den entsprechenden Mechanismus auswählen. Alle obigen Antworten gelten für eine Reihe von Anforderungen.

Möchten Sie nur den SSH-Zugriff einschränken? Benötigen Sie Zugriff für Mail- oder SSH-Methoden? Geht der Zugriff nur von root aus?

su - usererfordert ein Kennwort für den Benutzer, wenn es von einem anderen Benutzer als root ausgeführt wird. Allerdings sudo -u user -ierfordert kein Passwort für den Benutzer.

BillThor
quelle