SpacePenguins virtueller Eisbrecher: Pinguin-Schule - Linux-Interna: root

Wer oder was ist "root"?
Kurz gesagt: root ist der System-Administrator und er darf alles. Programme, die unter einem User-Account gestartet werden, laufen mit den Rechten des Users. Ist dieser User aber root, dann darf auch das Programm alles und hat Zugriff auf alles, auf das der root-User Zugriff hat - auch wenn es ein Virus, Trojaner oder sonstiger Schädling ist oder einfach nur ein Programm mit einem Bug. Macht ein Programm (oder man selbst) Mist und man ist nur als User eingeloggt, kann dem System selbst nichts passieren, als root dagegen kann man theoretisch, auch versehentlich, das ganze System löschen.

Insbesondere ist es eine schlechte Idee, sich grafisch als root einzuloggen. Dabei werden nämlich viel zu viele potentiell unsichere Dienste gestartet. Was nicht heißen muß, daß etwas passieren muß - aber die Wahrscheinlichkeit ist viel größer, als wenn man sich in der Konsole als root einloggt oder noch besser gar nicht.

Im Grunde sollte man "root" auch gar nicht als User betrachten, sondern vielmehr als Zustand. Und diesen Zustand kann man genauso erreichen, indem man die kleinen Helfer su (substitute user - Anwender ersetzen), sux, sudo, gksu und kdesu benutzt, mit denen man nur temporär den root-Status erlangt.

Die Arbeit mit sudo ist sicherlich am bequemsten. Man trägt dazu den User einmalig in die sudoers-Datei ein. Grundsätzlich darf das nur mit dem Kommando "visudo" (also root) geschehen, das die Datei im vi-Editor öffnet und anschließend eine Syntax-Prüfung vornimmt (um die geöffnete Datei zu editieren drückt man einmal das "i" auf der Tastatur, um die Datei zu speichern und gleichzeitig den Editor zu beenden nacheinander die fünf Tasten Esc Doppelpunkt w q Enter). Die sudoers-User können dann beliebige (oder nur bestimmte, je nach sudoers-Eintrag) Befehle als root ausführen, wenn vor dem eigentlichen Befehl ein "sudo" eingegeben wird. Mehr dazu auf den Handbuchseiten zu sudo, visudo und sudoers ("man visudo" etc.). Übrigens kann man sudo nicht nur in der Konsole nutzen, sondern auch Programmaufrufen in Menü- und Desktop-Verknüpfungen voranstellen. Die Ubuntu-Distributionen benutzen "sudo" als Standard für die Administration und haben den root-Zugang komplett deaktiviert.

Die beiden Befehle "su" und "sux" werden ebenfalls in der Konsole benutzt. Man wird damit in genau dieser Konsole root, und zwar solange, bis man "exit" eingibt. Abgefragt wird das root-Paßwort. Grafische Programme können mit "su" nicht gestartet werden. Um auch das zu bewerkstelligen und root Zugriff auf die eigene grafische Umgebung zu gestatten, nimmt man entweder sux statt su oder gibt vor dem su Aufruf noch als user "xhost +" ein. Damit erlaubt man den Zugriff für *alle*. Nachdem man seine root-Aufgaben erledigt hat und mit exit den root-Zustand wieder verlassen hat, sollte man auch die grafische Oberfläche wieder für andere sperren mit "xhost -". Mit su -c Befehl kann man übrigens direkt einen Befehl als root ausführen. Auch hier wird das root-Paßwort abgefragt.

Die beiden Helfer gksu und kdesu schließlich sind nur für die grafische Oberfläche zu gebrauchen. Genau wie sudo werden sie dem Programmaufruf vorangestellt. Bevor das eigentliche Programm gestartet wird, bekommt man eine grafische Dialogbox präsentiert (gksu dunkelt sogar noch den Bildschirm ab und sperrt alle anderen Aktionen dabei), in der man das root-Paßwort eingeben muß.

Ich habe gemerkt, daß es auch dann hilfreich ist, sich die grafische Umgebung für root so zu konfigurieren, daß sie sich von der des Users farblich unterscheidet, wenn man sich nicht grafisch als root einloggt. Man sieht so nämlich immer sofort, ob man als root oder als User in einem Programm arbeitet. Bei mir ist z.B. für den User "KDE-Standard" als Farb-Schema eingestellt und für root ein etwas dunkleres mit rotem Markierungsbalken. Auch benutze ich ein extra Icon-Theme für root, das statt der blauen Standard-Ordner rote verwendet. Die Farb- und Icon-Einstellungen für root kann man bequem über den Ausführen-Dialog (Alt-F2) und die Eingabe von "kdesu kcontrol" (ohne "Tüddel") vornehmen. Das Icon-Theme muß in /usr/share/icons bzw. bei SuSE /opt/kde3/share/icons und bei Slackware /opt/kde/share/icons liegen.

Auch die System-Mails, die root bekommt, kann man auf einen User umleiten. Dazu öffnet man die Datei /etc/aliases (z.B. su -c vi /etc/aliases) und trägt folgendes am Ende ein:
root: username
(username ersetzten durch eigenen Usernamen)

Dann kann man die Systemmails z.B. via KMail erhalten (dort einfach lokales Postfach einrichten).

Ihr seht, es gibt keinen Grund, sich direkt als root anzumelden :)

Nicht durcheinanderbringen lassen sollte man sich übrigens dadurch, daß man mit "root"-Verzeichnis (Englisch für Wurzel) auch die oberste bzw. unterste (das ist wohl eine Geschmacksfrage) Verzeichnisebene / bezeichnet. Für "unterste" spricht, daß sich die Wurzel eines Baumes normalerweise unten befindet, für "oberste" spricht, daß man von "Unterverzeichnissen" spricht und etwas "unterstes" nicht noch etwas unter sich haben kann. Man stelle halt den Baum oder sich selbst auf den Kopf oder so, jedenfalls ist das root-Verzeichnis / der Ausgangspunkt für alle weiteren Verzeichnisse.

Und um die Verwirrung komplett zu machen, hat auch noch root als Administrator sein eigenes Verzeichnis mit dem Namen /root.



Übrigens gibt es etwas ähnliches wie sudo inzwischen auch für Windows, auch da besteht keine Notwendigkeit, sich als Administrator anzumelden. Man benutzt als unprivilegierter User einfach "runas" (run as - ausführen als). Um z.B. als normaler User eine Befehlseingabebox als Administrator zu öffnen, gibt man im Ausführen-Dialog (Win-R) ein:
runas /user:Administratorname cmd
An Stelle der Befehlseingabebox "cmd" kann man natürlich auch beliebige andere Programme damit aufrufen, z.B. regedit. Funktioniert selbstredend nur, wenn man sowohl den Administratornamen als auch das Paßwort kennt.

zurück