Konfigurieren des Zugriffs auf die Konsole

Wenn sich normale Benutzer (nicht Root) an einem Computer lokal anmelden, werden ihnen zwei spezielle Berechtigungen zugeteilt:

  1. Sie können bestimmte Programme ausführen, die Sie normalerweise nicht ausführen können.

  2. Sie haben 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 gleichen 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 der Möglichkeit, mit der Tastenkombination Strg-Alt- Entf herunterzufahren

Standardmäßig ist durch /etc/inittab festgelegt, dass Ihr System mit der Tastenkombination Strg-Alt-Entf der Konsole sowohl heruntergefahren als auch neu gebootet werden kann. Wenn Sie diese Möglichkeit komplett deaktivieren wollen, müssen Sie die folgende Zeile aus /etc/inittab herauskommentieren:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Sie können auch bestimmten Nicht-Root Benutzern erlauben, das System von der Konsole aus mit der Tastenkombination Strg -Alt-Entf herunterzufahren. Sie können diese Berechtigung auf bestimmte Benutzer beschränken, indem Sie folgende Schritte durchführen:

  1. Fügen Sie die Option -a in die oben angezeigte Zeile /etc/inittab ein, so dass sie wie folgt aussieht:

    ca::ctrlaltdel:/sbin/shutdown -a -t3 -r now

    Die Anzeige -a weist shutdown an nach der Datei /etc/shutdown.allow zu suchen, die Sie im nächsten Schritt erstellen:

  2. Erstellen Sie in /etc die Datei shutdown.allow. Die Datei shutdown.allow sollte alle Namen der Benutzer beinhalten, die das System mit der Tastenkombination Strg-Alt-Entf herunterfahren dürfen. Das Dateiformat sieht dann wie folgt aus:

    Stephen
    Jack
    Sophie

Gemäß diesem Beispiel für die Datei shutdown.allow dürfen somit Stephen, Jack und Sophie das System von der Konsole aus mit der Tastenkombination Strg -Alt-Entf herunterfahren. Sobald diese Tastenkombination verwendet wird, überprüft shutdown -a (in /etc/ inittab abgelegt), ob alle Benutzer (oder Root) von /etc/shutdown.allow auf einer virtuellen Konsole angemeldet sind. Ist dies der Fall, wird das System weiter heruntergefahren, andernfalls wird eine Fehlermeldung auf die Systemkonsole geschrieben.

Weitere Informationen über shutdown.allow finden Sie unter der shutdown man-Seite.

Deaktivieren des Zugriffs auf Programme über die Konsole

Wenn Sie den Zugriff auf Programme über die Konsole deaktivieren wollen, sollten Sie folgenden Befehl als Root ausführen:

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

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/poweroff
rm -f /etc/security/console.apps/halt
rm -f /etc/security/console.apps/reboot

Deaktivieren aller Zugriffe über die Konsole

Das PAM-Modul pam_console.so verwaltet Konsolen-Datei-Berechtigungen und Authentifikationen. (Mehr Informationen über die Konfiguration von PAM erhalten Sie unter Kapitel 8). 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

Das Modul pam_console.so verwendet /etc/security/console.perms zum Festlegen der Berechtigungen für Benutzer der Systemkonsole. 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]* \
    /dev/floppy/*
<sound>=/dev/dsp* /dev/audio* /dev/midi* \
    /dev/mixer* /dev/sequencer \
    /dev/sound/*
<cdrom>=/dev/cdrom* /dev/cdwriter*

Sie können auch eigene Zeilen hinzufügen. Stellen Sie sicher, dass sich alle Zeilen, die Sie hinzufügen, auf das entsprechende Gerät beziehen. Sie können zum Beispiel folgende Zeile hinzufügen:

<Scanner>=/dev/sga

(Natürlich muss /dev/sga 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 <Sound>  0640 root
<Konsole> 0600 <CD-ROM>  0600 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, ist etwas mehr Aufwand notwendig.

Ü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. Nachdem Sie das überprüft haben, führen Sie folgende Schritte aus:

  1. Erstellen Sie einen Link vom Namen Ihrer Anwendung mit der Anwendung /usr/bin/consolehelper. (Wie unser Beispielprogramm foo ):
    cd /usr/bin
    ln -s consolehelper foo

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

  3. 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/halt /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.