Red Hat Linux 7.0: Das Offizielle Red Hat Linux Referenzhandbuch | ||
---|---|---|
Zurück | Kapitel 2 Systemadministration | Vor |
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.
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/* |
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 |
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 |
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).
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.