Allgemeines
Die zur Zeit gängigste Methode anderen Benutzern Rechte an bestimmten Programmen zu gewähren ist das Kommando sudo.
Sicherheitsbedenken
Man sollte gewährleisten, dass der Benutzer tatsächlich nur das Programm ausführen kann, das man ihm auch gewährt hat.
Logisch, aber es gibt viele Hintertüren, durch die man dann weitere Rechte erlangen kann:
- Sollte das Programm aus einem Shellscript bestehen, sollte man dem User das Recht nehmen, diese Datei zu ändern.
Das bedeutet nicht nur die Schreibrechte entziehen, sondern auch das Eigentums- oder Gruppenrecht und die Datei sollte auch nicht in einem Verzeichnis stehen, worauf der Benutzer Eigentums- oder Gruppenrechte hat. In diesen Fällen könnte der User nämlich die vorhandene Datei löschen und einfach eine andere "unterschieben". - In dem gestarteten Programm werden die Rechte auch an weitere "kindprozesse" vererbt, also darf das Programm keine weiteren Prozesse öffnen dürfen.
Beispiele:
Der Editor vi kann über das Kommando:!<Befehl>
weitere Programme oder eine neue Shell starten.
Gleiches gilt auch für die gängigsten Befehle zum seitenweisen Anzeigen von Textausgaben ("more", "less", "pg").
Diese haben auch nicht alle eine Option um das abzustellen.
Hinweis: sudo hat für diesen Fall einige Sicherheitsoption (siehe NOEXEC: Ausführungsverhinderung für weitere Kommandos) - Ähnlich funktioniert das auch mit Programmen in einer grafischen Oberfläche, die einen Dateiexplorer oder einen "Mini-Explorer" in Form eines "Datei öffnen"- Dialogs verwenden.
In diesem Explorer kann man dann mit root-Rechten Dateioperationen wie löschen, editieren etc. ausführen.
Einstellen der Zugriffrechte
Verschiedene Linux-Distributionen bieten grafische Oberflächen, Beispiel "SuSE => Yast", "Sicherheit"
Eine weitere Möglichkeit ist die manuelle Bearbeitung der Datei /etc/sudoers, aus der die Einstellungen des sudo gelesen werden.
Diese Datei kann man z.B. mit dem Kommando "visudo" ändern. Nach der Änderung wird die neue Einstellung direkt aktiviert und ggf. erfolgt eine Fehlermeldung.
Prinzipiell funktioniert die Einstellungen des sudo über
- Benutzeralias (Ein oder mehrere User erhalten einen neuen Namen oder werden in einer Gruppe zusammengefasst)
Syntax:User_Alias ALIASNAME = User1, User2
- Runas-Alias (Liste von Usern, deren Identität angenommen werden soll)
Nicht immer muss es der User "root" sein, unter dem die Programme laufen sollen, oft sind es auch besondere User, die Anwendungsprogramme administrieren.
z.B.: mysql, informix, oracle (Datenbanksysteme)
Syntax:Runas_Alias ALIASNAME = User1, User2
- Hostalias (Liste von Servern, auf denen die Rechte gesetzt werden sollen)
Syntax:Hostnamen können in folgenden Formen angegeben werden:Host_Alias ALIASNAME = HOSTNAME1, HOSTNAME2
128.138.0.0/255.255.0.0 #IP-Adressbereich mit Netmask
128.138.243.0 #einzelne IP-Adresse
128.138.204.0/24 #IP-Adressbereich mit Netmask in alternativer Schreibweise
Auch können Hostnamen aus der Datei /etc/hosts verwendet werden - Befehlsalias (Liste von Befehlen, für die die Rechte gesetzt werden sollen)
Syntax:Cmd_Alias ALIASNAME = Befehl1, Befehl2