Login an der Konsole nur für root erlauben

E

-eraz-

Tripel-As
Ich stelle meine Frage nochmal in einem extra Thread. Irgendwie scheint das wohl nicht so einfach zu sein wie ich dachte, zumindest konnte mir Tante Google kein bisschen weiterhelfen.
Gibt es eine Möglichkeit, den Login an der Konsole (also an der physischen Maschine) nur für root zu erlauben?
 
Einfach den anderen Usern als Shell /bin/false oder /bin/nologin eintragen. Geht natürlich nur, wenn diese auch keinen Remote-Zugang haben. Ansonsten wirst du vermutlich mit dem von dir verwendeten getty-Programm etwas rumtricksen müssen. Gibt bestimmt irgendein getty, das man auf bestimmte User restrikten kann. Ansonsten... happy coding. ;)
 
Ich würd eher darauf tippen, dass man das mit pam machen kann.
 
Man könnte das auch via Script lösen. Wenn sich der User anmeldet, wird geprüft ob er lokal angemeldet ist, oder nicht. Wenn ja => rausschmeißen und für 10min das Konto sperren, wenn nein => alles gut :)
 
Ich bin zwar nicht der vertrauteste in dem Gebiet, aber ich tippe auch auf /bin/false als shell einstellen. Gibts da eigentlich einen befehl für? changeuser oder so? Oder muss man das in der passwd machen?
 
Ich würds wie chb machen. ;)
Code:
echo 'Wartungsarbeiten bis vorraussichtlich 22:30 Uhr' > /etc/nologin
 
Gibts da eigentlich einen befehl für? changeuser oder so? Oder muss man das in der passwd machen?

Meinst du vielleicht

Code:
chsh -s /bin/false username
 
Ich bin zwar nicht der vertrauteste in dem Gebiet, aber ich tippe auch auf /bin/false als shell einstellen.

Wurde oben schon gesagt ;) Wobei damit aber die User generell ausgesperrt werden, sich also auch via ssh nicht mehr anmelden können.

Ich würd's spontan auch so machen, wie niLs, via Script (oder, nachdem ich des alles gelesen habe, nologin anschauen, des kenn ich noch nicht)
 
abgesehen davon das nologin und /bin/false es (allen) Nutzern verbietet irgendetwas mit dem Rechner anzustellen, keimt (in mir) die Frage auf: Wieso will man das? Ich mein, man kann sicher die VTs alle schliessen und die Console auf seriell legen (damit der beitrag nicht ganz so OT wird, mal meine Idee ;)), aber was bringt es einem ein? Als akademische Frage sicher 'sehr spannend", aber ich seh keinen Gewinn..
 
Den Hintergrund würde ich auch gerne wissen.. Ansonsten wurde die richtige Antwort schon gegeben. PAM in Verbindung mit pam_listfile
 
Ich würds wie chb machen. ;)
Code:
echo 'Wartungsarbeiten bis vorraussichtlich 22:30 Uhr' > /etc/nologin

_DAS_ würde ich nicht machen!

Wer so schlau ist und sein System unter anderem dadurch absichert, indem er seinem root-User das Anmelden per SSH verbietet wird damit ziemliche schwierigkeiten bekommen - denn normale User dürfen sich nicht mehr anmelden. Ich bevorzuge es so, dass ich mich auf meinen Kisten per User anmelde und mich dann per su zum root mache.

Blöd wäre in diesem Fall die nologin-methode.

Ich würde das ganze entweder per /bin/false lösen, - problem dabei ist aber, wenn man viele nutzer auf dem system hat, dass man halt alle ändern muss.

Da finde ich den Eintrag in der jeweiligen .bash_profile ein wenig einfacher.

Gruß Nils
 
So nun melde ich mich als Threadersteller auch wieder mal zu Wort, sorry das ich mich so lange nicht gemeldet habe. Erstmal danke für die vielen Vorschläge! Ich denke, dass ein Eintrag in die /etc/profile am sinnvollsten erscheint. Durch eine Abfrage welche prüft, ob es sich um eine Konsolenanmeldung handelt und falls ja ob es root ist. Soweit mal meine Theoretische Vorstellung - Einwände sind gerne willkommen. ;)

Da die Frage nach dem Grund aufgetaucht ist, möchte ich diese auch noch beantworten: Alle RedHat Server laufen bei uns auf einer ESX, sind also virtualisiert. Theoretisch haben somit viele meiner Kollegen mittels Virtualcenter Zugriff auf die Konsole, die aber im eigentlichen Sinne garnix mit dem Server(n) zu tun haben. Ich will verhindern das sich hier irgendwelche User anmelden, vorallem deswegen, weil die Server im Active Directory hängen (werden).
Somit wäre es jedem meiner Kollegen möglich sich auf dem Server anzumelden und genau das möchte ich verhindern.
 
Du kannst den Zugriff auf die VC-Console aber auch mittels den von VMware vorgegebenen Rechten beschrenken. Ich lasse die Maschinen, die meine Kollegen nichts angehen, einfach ausblenden, indem ich den Zugriff darauf gänzlich verbiete.
 
Zuletzt bearbeitet:
Wäre ansich eine gute Idee. Leider habe ich auf die ESX selbst keine administrativen Berechtigungen, und das in unserem relativ großen Unternehmen anzustoßen gleicht einem Martyrium. :D Einzelne Maschinen würden nicht ausgeblendet werden, sondern wenn dann müsste eine ganz neue Gruppe "erfunden" werden. Da hab ich schlicht und einfach keine Lust 5 Abteilungen für sowas einschalten zu müssen und mich dann wahrscheinlich noch in zig Besprechungen zu setzen. :D

Darum ist der einfachere Weg für mich die eigentliche Fragestellung. ;)
 
Zuletzt bearbeitet:
Habe nun folgenden Code am Ende von /etc/profile hinzugefügt.

Code:
TTY=$(tty)

if [ "$TTY" = "/dev/tty1" ]; then
   USER=$(whoami)
        if [ "$USER" = "root" ]; then
          echo "Anmeldung fuer root erfolgreich!"
        else
          echo "Die Konsolenanmeldung ist nur fuer root erlaubt!"
          logout
        fi
fi

Funktioniert ;)
 
Das Eintragen einer Shell wie /bin/false oder /bin/nologin für User, die sich nicht auf der Konsole anmelden dürfen, wäre definitiv der sauberere Weg gewesen.
 
Das Eintragen einer Shell wie /bin/false oder /bin/nologin für User, die sich nicht auf der Konsole anmelden dürfen, wäre definitiv der sauberere Weg gewesen.

Das sehe ich anders, bei /bin/false bzw. /bin/nologin wird auch die SSH-Sitzung mit gesperrt. Wenn man eine Datei in /etc/ namens nologin erstellt, sperrt man alle $User aus.

Er wollte aber nur die Konsolensitzungen sperren, nicht aber die SSH-Sitzungen.

-------

Habe nun folgenden Code am Ende von /etc/profile hinzugefügt.

Code:
TTY=$(tty)

if [ "$TTY" = "/dev/tty1" ]; then
   USER=$(whoami)
        if [ "$USER" = "root" ]; then
          echo "Anmeldung fuer root erfolgreich!"
        else
          echo "Die Konsolenanmeldung ist nur fuer root erlaubt!"
          logout
        fi
fi

Funktioniert ;)

Ich würde aber nicht nach $user = root abfragen, sondern nach $uid = 0.
Das habe ich auch schon in anderen Beiträgen geschrieben, es gibt auch Leute, die sich nen eigenen root-User anlegen (mich inbegriffen).
 
Zuletzt bearbeitet:
Die /etc/profile wird beim Start der Shell eingelesen und somit auch beim SSH-Login.

Code:
       When bash is invoked as an interactive login shell, or as a  non-inter-
       active  shell with the --login option, it first reads and executes com-
       mands from the file /etc/profile, if that file exists.

Fazit: Er hat das gleiche erreicht wie eine nologin-Shell, nur ein wenig unsicherer.
 
Das sehe ich anders, bei /bin/false bzw. /bin/nologin wird auch die SSH-Sitzung mit gesperrt. Wenn man eine Datei in /etc/ namens nologin erstellt, sperrt man alle $User aus.

Er wollte aber nur die Konsolensitzungen sperren, nicht aber die SSH-Sitzungen.
Ganz recht ;)
Ich würde aber nicht nach $user = root abfragen, sondern nach $uid = 0.
Das habe ich auch schon in anderen Beiträgen geschrieben, es gibt auch Leute, die sich nen eigenen root-User anlegen (mich inbegriffen).
ok stimmt, danke für den Hinweis.

@bitmuncher
So wie ich das bisher verstanden habe, wären beim verwenden von nologin auch die SSH User betroffen und genau das will ich eben nicht.
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Welches Linux/Unix für ehemaligen OSX Nutzer?

So, das wars nun endgültig mit Centos und Linux

nginx owncloud, php? Problem

openn SuSE 13.1 - 64-BIt erlaubt nicht mehr als 20GB für /root

Zurück
Oben