ADMIN-Tipp: Autologin auf der Console

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Vor allem in Testumgebungen ist es mühsam, sich immer wieder aufs Neue einloggen zu müssen. Ein automatisches Login lässt sich außer auf dem grafischen Desktop auch auf der Linux-Console realisieren.

Die gängigen Linux-Desktop-Umgebungen wie Gnome und KDE erlauben es einzustellen, dass man sich nach dem Starten auf dem Desktop wiederfindet, ohne Benutzernamen und Passwort einzugeben. Auf der Textconsole gibt es dafür keine einfache Möglichkeit, aber je nach Distribution einen mehr oder weniger einfachen Weg zu diesem Ziel. Die Hauptschwierigkeit liegt darin, dass kaum zwei Linux-Distributionen die virtuellen Textkonsolen auf die gleiche Art aktivieren. Im Prinzip ist der Weg zwar der gleiche: Init-Skripts starten Getty-Prozesse für die virtuellen TTYs, die nach der Eingabe von Benutzernamen und Passwort an den Login-Prozess weiterleiten. In der Implementierung unterscheiden sich die Distributionen aber stark: Je nach Distribution und Version verwendet ein System das klassische SysV-Init, Upstart oder Systemd. Und selbst wenn zwei Linux-Varianten Upstart verwenden, müssen sie noch lange nicht auf dem gleichen Weg die TTYs aktivieren. 

Besonders einfach ist es mit Ubuntu (14.04). Hier startet Upstart die Getty-Prozesse für die TTYs, wobei für jede virtuelle Terminal im Upstart-Verzeichnis "/etc/init" eine eigene Datei zu finden ist, etwa "tty1.conf", "tty2.conf" und so weiter. Um nun ein automatisches Login auf TTY1 einzurichten, bleibt nicht mehr zu tun, als die Datei "tty1.conf" so abzuändern:

start on stopped rc RUNLEVEL=[2345] and (
            not-container or
            container CONTAINER=lxc or
            container CONTAINER=lxc-libvirt)
stop on runlevel [!2345]
respawn
exec /bin/login -f ubuntu < /dev/tty1 > /dev/tty1 2>&1

Wichtig ist hierbei nur die letzte Zeile, in der vorher der Aufruf von "getty" stand. Stattdessen startet Upstart nun den Login-Prozess mit dem Benutzer "ubuntu".

Etwas schwieriger ist es beispielsweise mit CentOS 6.5 respektive Red Hat Enterprise Linux 6.5, die auf einen Mix aus SysV-Init und Upstart setzen. Allerdings verwenden sie nicht wie Ubuntu einzelne Upstart-Dateien für jedes TTY, sondern eine zentrale Start-Datei "/etc/init/start-ttys.conf", die variablengesteuert die TTYs aktiviert. Statt die Start-Datei direkt zu ändern, legt man am besten eine "Override"-Datei "/etc/init/start-ttys.override" an, die das Upstart-Skript dann beim Booten statt des Originals verwendet. Gegenüber dem Original entfernt man aus der Liste der aktivierten TTYs das "tty1", auf dem das Autologin konfiguriert wird:

start on stopped rc RUNLEVEL=[2345]
env MY_ACTIVE_CONSOLES=/dev/tty[2-6]
env X_TTY=/dev/tty2
task
script
    . /etc/sysconfig/init
    for tty in $(echo $MY_ACTIVE_CONSOLES) ; do
        [ "$RUNLEVEL" = "5" -a "$tty" = "$X_TTY" ] && continue
        initctl start tty TTY=$tty
    done
end script

Außerdem ist gegenüber dem Original der Variablenname "ACTIVE_CONSOLES" in "MY_ACTIVE_CONSOLES" geändert, weil "ACTIVE_CONSOLES" dummerweise noch einmal im Skript "/etc/sysconfig/init" gesetzt wird, das später folgt - an sich eine wenig sinnvolle Einstellung. Der Rest der Konfiguration besteht darin, die Datei "/etc/init/tty1.conf" mit dem gleichen Inhalt anzulegen wie im obigen Abschnitt über Ubuntu beschrieben.

Bleibt am Ende noch die Konfiguration mit Systemd, für die Fedora 20 als Beispiel dienen soll. Der erste Schritt besteht darin, die existierende Startup-Datei zu kopieren, um sie anschließend anzupassen. Ein symbolischer Link stellt dann die Verbindung zum gewünschten TTY her. Im Beispiel ist das "tty2", weil das Autologin auf "tty1" nicht funktioniert:

cp /lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty2.service

In dieser Datei ist dann nur der Getty-Aufruf so anzupassen, dass er den gewünschten Benutzer automatisch einloggt, hier mit dem Benutzernamen "fedora":

ExecStart=-/sbin/agetty --noclear --autologin fedora %I

Nach einem Reboot sollte man auf dem zweiten virtuellen Terminal als User "fedora" eingeloggt sein.

24.06.2014
comments powered by Disqus

Artikel der Woche

Loadtests ohne Server

Für Loadtests der eigenen Server bietet sich die Cloud an, denn kurz getaktet lassen sich dort viele Rechnerinstanzen starten, die das eigene Budget nur wenig belasten. Noch flexibler, günstiger und besser skalierbar sind Tests mit einer Serverless-Infrastruktur wie AWS Lambda. Wir führen vor, wie Sie dort mit Serverless Artillery eigene Loadtests starten. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018