QVINTVS · SCRIBET

Kurztipp: Kein Login mit der Z-Shell

Ein Fund aus dem Kuriositätenkabinett: Wenn man die Login-Shell zur Z-Shell ändert, kann man sich nicht mehr einloggen.

Ja, ihr habt richtig gelesen. Ich habe auch erst gedacht: WTF? Aber auf einem frisch installierten Arch Linux (Standardshell ist /bin/bash) konnte ich mich nach

# usermod -s /bin/zsh quintus

nicht mehr einloggen. Und ja, natürlich ist die Z-Shell installiert und natürlich liegt sie unter /bin/zsh. Beim Einloggen hieß es nur lapidar:

asgard login: quintus
Password:
Login incorrect

Nachdem ich die Shell wieder zurück auf /bin/bash geändert hatte, ging es wieder. Im Log hieß es nur “authentication failure”.

Für des Rätsels Lösung habe ich einigen Hirnschmalz aufwenden müssen, bevor ich sie herausgefunden hatte. Unter Arch Linux ist /bin ein Symlink auf /usr/bin; eigentlich liegt die Z-Shell somit unter /usr/bin/zsh. Dasselbe gilt aber auch für die Bash, sie liegt natürlich auch unter /usr/bin/bash, weist aber das Login-Problem nicht auf. Das Geheimnis verbirgt sich in der Datei /etc/shells, die ich heute das erste Mal überhaupt intensiver in Augenschein genommen habe. Und da steht:

#
# /etc/shells
#

/bin/sh
/bin/bash

# End of file
/usr/bin/zsh
/bin/tcsh
/bin/csh

Das Problem liegt nicht in der Tatsache, dass nach “end of file” weitere Shells aufgeführt werden (dafür mache ich einfach mal Post-Install-Skripte verantwortlich), sondern in der Art und Weise, wie die Z-Shell aufgeführt wird. Diese wird nämlich im Gegensatz zu allen anderen Shells als /usr/bin/zsh aufgeführt, also explizit unter /usr/bin statt /bin! Das führt dann auch stracks zu der Lösung für das Problem:

# usermod -s /usr/bin/zsh quintus

Und schon funktioniert das Login auch wieder.

Valete.