Simon Szustkowski

Ein Blog über alles, was mir gerade so durch den Kopf geht

Nov 9, 2017

Arch Linux: Kein Login auf tty möglich

Ich hatte kürzlich einen seltsamen Bug: Obwohl mein Computer normal startete, einen X-Server starten konnte, und ich ganz normal mit ihm arbeiten konnte, war ein Login auf einem anderen tty ohne X nicht möglich. Mein Passwort wurde schlichtweg abgelehnt. Keymap war aber in Ordnung, und das Passwort definitiv das richtige (Ändern des Passwortes auf der grafischen Oberfläche, und dann ein neuer Login-Versuch schlugen auch fehl).

Nach ein bisschen herumbasteln hatte ich das Problem identifiziert, und schnell die Lösung: In meinem $PATH war /usr/bin vor /bin. Ich hatte in letzter Zeit ein bisschen mit verschiedenen Shells herumexperimentiert, und wollte wieder zu meinem Standardsetup zurück: Eine fish, die aus Gründen (z.B. keiner POSIX-Kompatibilität, was als Default-Shell z.B. von ssh-copy-id nicht akzeptiert wird) von der bash über einen Eintrag in der .bashrc gestartet wird. Ich habe also den Pfad zur bash mit which bash nachgesehen und bekam /usr/bin/bash zurück, sodass ich meine Shell auf /usr/bin/bash eingestellt habe.

Zum einen scheint /usr/bin aber nur ein Symlink auf /bin zu sein (sieht bei mir nicht danach aus, aber das Internet behauptet es), zum anderen war /usr/bin/bash nicht in der /etc/shells aufgelistet. Dies hat mir chsh auch mitgeteilt, aber ich hatte es ignoriert, da ich die Zusammenhänge nicht kannte.

Auf jeden Fall hatte ich bei mir also eine Login-Shell eingetragen, die laut Richtlinie gar nicht erlaubt war. Deswegen hat /bin/login den Loginvorgang einfach abgebrochen. Es gibt hierfür also 2 Lösungen:

  1. /usr/bin/bash in die /etc/shells eintragen - das ist aber unüblich, da die bash ja eigentlich schon einen Eintrag hat.
  2. /bin/bash als Shell setzen. Und ggf prüfen, wieso /usr/bin im Pfad vorher auftaucht.

Nun, da ich wieder eine erlaubte Shell habe, klappt auch der Login auf einem tty.

Merke: Nur mit Shells, die auch in der /etc/shells stehen ist ein tty-Login möglich - auch wenn ein grafischer Login weiterhin funktioniert.