Konfigurieren des Zugriffs auf die Konsole

Wenn sich normale Benutzer (nicht Root) an einem Computer lokal anmelden, werden ihnen zwei spezielle Berechtigungen zugeteilt. Zum einen dürfen Sie bestimmte Programme ausführen, die sie normalerweise nicht ausführen können, zum anderen haben sie Zugriff auf bestimmte Dateien (in der Regel spezielle Gerätedateien für den Zugriff auf Disketten und CD-ROMs usw.), auf die sie im Normalfall keinen Zugriff haben.

Da ein einzelner Computer über mehrere Konsolen verfügt und zur selben Zeit mehrere Benutzer lokal am gleichen Computer angemeldet sein können, muss es einen Benutzer geben, der beim Streit um den Dateizugriff "gewinnt". Der erste Benutzer, der sich an der Konsole anmeldet, wird zum Eigentümer dieser Dateien. Wenn sich der erste Benutzer abgemeldet hat, wird der Benutzer, der sich als Nächstes angemeldet hat, zum Eigentümer der Dateien.

Dagegen darf jeder Benutzer, der sich an der Konsole anmeldet, Programme ausführen, die normalerweise nur Root vorbehalten sind. Standardmäßig fragen diese Programme nach dem Passwort des Benutzers, und zwar in grafischer Darstellung, wenn X ausgeführt wird. Dadurch ist es möglich, diese Aktionen als Menüeinträge in einer grafischen Benutzeroberfläche zu realisieren. Red Hat Linux wird mit den über die Konsole ausführbaren Programmen shutdown, halt and reboot ausgeliefert.

Deaktivieren des Zugriffs auf Programme über die Konsole

In Umgebungen, in denen die Konsole anderweitig gesichert ist (BIOS- und LILO-Passwörter gesetzt, Strg-Alt-Entf deaktiviert, Netz- und Reset-Schalter deaktiviert usw.), sollte es beliebigen anderen Benutzern der Konsole nicht erlaubt sein, shutdown, halt und reboot auszuführen.

Zum Deaktivieren jeglicher Zugriffe von Konsolenbenutzern auf Konsolenprogramme müssen Sie den folgenden Befehl ausführen:

rm -f /etc/security/console.apps/*
        

Deaktivieren aller Zugriffe über die Konsole

Um alle Konsolenzugriffe einschließlich Programm- und Dateizugriffe zu deaktivieren, kommentieren Sie im Verzeichnis /etc/pam.d/ alle Zeilen aus, die sich auf pam console.so beziehen. Das folgende Skript kann Ihnen diese Arbeit abnehmen:

cd /etc/pam.d
for i in * ; do
sed '/[^#].*pam_console.so/s/^/#/' < $i > foo && mv foo $i
done
        

Definieren der Konsole

Die Datei /etc/security/console.perms definiert die Konsolengruppe. Die Syntax dieser Datei ist sehr flexibel. Die Datei kann bearbeitet werden, um die in ihr enthaltenen Befehle zu verändern. Die Standarddatei enthält jedoch die folgende Zeile:

 <Konsole>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9]
        

Wenn sich die Benutzer anmelden, sind sie mit irgendeinem benannten Terminal verbunden. Das kann entweder ein X-Server mit einem Namen wie :0 oder mymachine.example.com:1.0 sein, oder es kann sich um ein Gerät wie /dev/ttyS0 oder /dev/pts/2 handeln. In der Standardeinstellung wird definiert, dass nur lokale virtuelle Konsolen und lokale X-Server als lokal angesehen werden. Wenn Sie aber das serielle Terminal an Port /dev/ttyS1 gleich nebenan ebenfalls als lokales Terminal definieren möchten, können Sie diese Zeile wie folgt ändern:

<Konsole>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9] /dev/ttyS1
        

Gewähren des Zugriffs auf Dateien über die Konsole

Die Datei /etc/security/console.perms enthält einen Abschnitt mit Zeilen wie die Folgende:

<Floppy>=/dev/fd[0-1]*
<CD-ROM>=/dev/cdrom
<jaz>=/dev/zip
        

Sie können auch eigene Zeilen hinzufügen:

<Scanner>=/dev/sga
	

(Natürlich muss /dev/sga tatsächlich Ihr Scanner sein und nicht z.B. Ihr Festplattenlaufwerk.)

So viel zum ersten Teil. Im zweiten Teil müssen Sie definieren, was mit diesen Dateien zu geschehen hat. Suchen Sie im letzten Abschnitt von /etc/security/console.perms nach Zeilen wie:

<Konsole> 0660 <Floppy> 0660 root.floppy
<Konsole> 0600 <CD-ROM>  0600 root.disk
<Konsole> 0600 <jaz>    0660 root.disk
          

Fügen Sie eine Zeile hinzu:

<Konsole> 0600 <Scanner>  0600 root
          

Wenn Sie sich danach an der Konsole anmelden, werden Sie Eigentümer des Geräts /dev/sga mit der Zugriffsberechtigung 0600 (Lesen und Schreiben nur durch Sie selbst möglich). Wenn Sie sich abmelden, wird Root zum Eigentümer, und die Zugriffsberechtigung bleibt weiterhin 0600 (jetzt ist Lesen und Schreiben nur durch Root möglich).

Aktivieren des Zugriffs auf andere Anwendungen über die Konsole

Um Konsolenbenutzern neben shutdown, reboot und halt Zugriff auf weitere Anwendungen zu geben, müssen Sie etwas mehr Aufwand treiben.

Über die Konsole kann nur auf Anwendungen zugegriffen werden, die in /sbin oder /usr/sbin abgelegt sind. Die Anwendung, die Sie ausführen möchten, muss also dort abgelegt sein.

Erstellen Sie einen Link vom Namen Ihrer Anwendung mit der Anwendung /usr/bin/consolehelper:

cd /usr/bin
ln -s consolehelper foo
	

Erstellen Sie die Datei /etc/security/console.apps/foo:

touch /etc/security/console.apps/foo
	

Erstellen Sie eine PAM-Konfigurationsdatei für den Dienst foo in /etc/pam.d/. Es empfiehlt sich, mit einer Kopie des shutdown-Dienstes zu beginnen und diesen dann zu ändern, falls Sie dessen Verhalten ändern möchten:

cp /etc/pam.d/shutdown /etc/pam.d/foo
	

Wenn Sie jetzt /usr/bin/foo ausführen, wird das Programm consolehelper aufgerufen, das wiederum mit Hilfe von /usr/sbin/userhelper den Benutzer authentifiziert. (Wenn /etc/pam.d/foo eine Kopie von /etc/pam.d/shutdown ist, werden Sie nach dem Passwort gefragt. Anderenfalls läuft genau das ab, was in /etc/pam.d/foo angegeben ist.) Dann wird /usr/sbin/foo mit Root-Zugriffsberechtigung ausgeführt.