Es gibt unterschiedliche Gründe, bei Linux zu Gast zu sein. In Bildungseinrichtungen ist ein wichtiger Grund das Ablegen einer Prüfung, während dessen keine unerlaubten Ressourcen vom Prüfling eingesehen werden dürfen. Aus diesem Grund ist es sinnvoll, ein Konto für einen Gastbenutzer mit vorgegebenen Ressourcen einzurichten, dessen Heimatverzeichnis bei der Abmeldung wieder gelöscht wird, so dass nachfolgende Prüflinge nicht auf die Arbeit des Vorgängers Zugriff erhalten. Sinnvoller weise kann ein solches Konto ohne die Eingabe eines Kennwortes benutzt werden. Dafür ist es aus Sicherheitsgründen stark eingeschränkt.

Zunächst wird ein neues Benutzerkonto angelegt. Typischerweise ist der Name "gast", Dies kann in den Einstellungen über eine komfortable Benutzungsoberfläche erledigt werden.

Diejenigen, die die Kommandozeile bevorzugen, können die Benutzergruppe und das Benutzerkonto mit folgendem Kommando erstellen:

sudo useradd -c Gast,,, -d /tmp/gast -M -s /bin/bash gast

Dieses Kommando sorgt dafür, dass Heimatverzeichnis bei der späteren Anmeldung auf /tmp angelegt wird. Das ist wichtig, damit das Verzeichnis auf jeden Fall gelöscht wird, auch wenn der Benutzer sich nicht abmeldet sondern den Computer über das Entziehen der Stromversorgung abschaltet. Das Löschen des Benutzerverzeichnisses bei der Abmeldung wird noch später konfiguriert werden. Benutzer kann sich erst später anmelden, wenn das Kennwort gesetzt ist.Doch erst müssen noch die Rechte für den Benutzer eingeschränkt werden. Die Handbuchseite von useradd(1) ist zum Verständnis lesenswert. Dort ist auch ausgeführt, dass standardmäßig eine Gruppe mit dem gleichen Namen angelegt- und danach als primäre Gruppe des Benutzers eingetragen ist. 

Im nächsten Schritt wird eine Richtlinie für die neu erstellte Gast-Benutzergruppe eingerichtet, die alle Systemfunktionen für deren Mitglieder verbietet. Hierfür wird eine Richtliniendatei in das Verzeichnis /etc/polkit-1/localautority/50-local.d/10-gast-policy.pkla gespeichert. Die Zahl am Anfang der Datei bestimmt die Position, an der die Richtlinie gelesen wird. Die Dateiendung .pkla ist wichtig, damit die Datei überhaupt beachtet wird. Die Datei enthält folgende Regel:

[gast-policy]
Identity=unix-group:gast
Action=*
ResultActive=no
ResultIncative=no
ResultAny=no

Die Richtlinie bestimmt, dass alle Mitglieder der Gruppe gast keine Systemfunktion ausführen dürfen. Weitere Informationen finden sich in dem Handbucheintrag pklocalauthority(8). Lesenswert ist auch die  Einführung in das Linux Richtliniensystem.

Als Nächstes wird das sog. Pluggable Authentication Module (PAM) so konfiguriert, dass der Gast-Benutzer nicht das su-Kommando ausführen darf, damit er keine erhöhten Rechte erwerben kann. Zu diesem Zweck wird die Datei /etc/pam.d/su bearbeitet und der folgende Eintrag erstellt:

auth   required   pam_wheel.so deny group=gast

Ein ähnlicher Eintrag ist in dieser Datei bereits vorhanden – nur mit einem anderen Gruppennamen und auskommentiert. Es lohnt sich auch einen kurzer Blick in die Handbuchseite von pam_wheel(8).

Nun wird sichergestellt, dass das Heimatverzeichnis des Gast-Benutzers bei Anmeldung angelegt wird, wenn es nicht schon vorhanden ist. Hierfür wird zunächst ein Musterverzeichnis /etc/skel-gast erstellt, in dass alle Dateien kopiert werden, die dem Benutzer nach der Anmeldung zur Verfügung stehen sollen.

sudo mkdir /etc/skel-gast

In dieses Verzeichnis können insbesondere auch die Einstellungen für das Dock und den Desktop kopiert werden. Anschließend wird in die Datei /etc/pam.d/common-session  der Eintrag zum erstellen des Heimatverzeichnisses bei der Anmeldung gespeichert:

...
# end of pam-auth-update config

session required pam_mkhomedir.so skel=/etc/skel-gast/ umask=0077

Dieser Eintrag wird hinter dem letzten Kommentar ganz am Ende dieser Datei gesetzt, damit pam-auth-update(8) die Einstellung nicht überschreibt.

Nun kann ein Kennwort gesetzt werden, damit die Anmeldung als Gast geprüft werden kann. Hierzu wird dem Benutzer ein leeres Kennwort gesetzt. Dies kann mann mit dem Kommando usermod erledigt werden.

sudo usermod --password U6aMy0wojraho gast

Damit das Heimatverzeichnis bei der Abmeldung des Gastes wieder geleert wird und alle Dateien des Benutzers auch außerhalb seines Heimatverzeichnisses gelöscht werden, kann ein kleines Skript in das PostSession-Skript des Gnome Displaymanagers (gdm) gespeichert werden. Hierzu wird in die Datei /etc/gdm3/PostSession/Default das folgende Shell-Skript gespeichert:

if [ $USER = gast ]; then
    rm -rf $HOME
logger "Heimatverzeichnis des Gasts gelöscht (Status=$?)"
find / -user gast -exec logger $(echo Gasts Datei {} bei Abmeldung gefunden) \; \
-exec rm -rf {} \; 2>/dev/null;

fi

Eine genaue Beschreibung der Skript-Integrationspunkt des Gnome Display Managers befindet sich im Gnome Anmeldefenster Referenzhandbuch. Auch hier lohnt es sich, etwas zu schmökern.

Für das Gast-Konto wurde ja oben ein leeres Kennwort eingerichtet. Da ist eine Kennwortabfrage nicht sinnvoll. Deshalb soll die Kennwortabfrage für dieses Konto unterdrückt werden. Um das zu erreichen, wird in die Datei /etc/pam.d/common-auth die folgende Zeile vor dem primary Block eingefügt (siehe pam-auth-update(8)):

auth sufficient pam_succeed_if.so quiet user ingroup gast

# here are the per-package modules (the "Primary" block)
...

Die Einzelheiten und weitere Möglichkeiten finden sich auf der Handbuchseite von pam_succeed_if(8).

Zu guter Letzt soll eine zeitverzögerte automatische Anmeldung als Gast eingerichtet werden. Diese greift nur, wenn sich innerhalb einer bestimmten Frist niemand am System authentifiziert. Sobald nur eine Taste gedrückt wird, startet die Frist erneut. Hierfür beachtet gdm einige Optionen, die in der Konfigurationsdatei /etc/gdm3/custom.conf festgelegt werden können. Folgende drei Zeilen werden in dieser Datei eingefügt oder entsprechend geändert:

[daemon]
TimedLoginEnable=true
TimedLogin=gast
TimedLoginDelay=10

Diese und andere Optionen können im Kapitel Konfiguration des GNOME Anmeldefenster Referenzhandbuchs nachgelesen werden.

Es sei hier darauf hingewiesen, dass diese Konfiguration die Benutzung unerlaubter Ressourcen durch den Prüfling nicht unbedingt sicherstellt. Hierfür muss natürlich der unerlaubte Netzwerkverkehr unterbunden werden. Das kann ggf. durch Ziehen des Netzwerkkabels geschehen. Falls es noch weitere lokale Heimatverzeichnisse auf dem Computer gibt, so ist sicherzustellen, dass der Gast sie nicht lesen kann. Oft sind diese „normalen Heimatverzeichnisse“ jedoch auf einem zentralen Server gespeichert und werden nur bei der Anmeldung temporär an den lokalen Rechner montiert. Generell stellt dieser Ansatz jedoch eine seit Jahren bewährte Möglichkeit, in Bildungseinrichtungen auf Rechnern mit einem freien Betriebssystem Prüfungen durchzuführen.