Entwicklerhandbuch/Sudo
Diese Seite ist momentan eine Baustelle im Zustand: 1
-
0
-
1
-
2
-
3
-
4
Programmrechte mit sudo vergeben
Es soll hier beschrieben werden, wie man wwwrun
die Ausführung von Scripten bzw. Programmen ermöglicht, für die eigentlich root-Rechte benötigt werden. Dazu sei angenommen, das es unter /usr/sbin
ein Script example.pl
gibt, welches durch ein CGI-Script (also mit den Rechten von wwwrun
) aufgerufen werden soll.
Die Datei /etc/sudoers
Dazu muss im Verzeichnis /etc
die Datei sudoers
editiert werden. diese Datei sieht bei delixs
so aus:
<source lang="text">
# sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the man page for the details on how to write a sudoers file. # # Host alias specification # Cmnd alias specification Cmnd_Alias ONLINE=/usr/sbin/online,/usr/sbin/onpassch,/usr/sbin/onipfwmasq Cmnd_Alias HTTPSW=/usr/sbin/httpswitch Cmnd_Alias MATERIAL=/usr/www/admin/material/material.sh # User specification root ALL=ALL %lehrer ALL=HTTPSW %online ALL=ONLINE %material ALL=MATERIAL
</source>
Der entscheidende Abschnitt ist der unter # User specification
. Dort wird angegeben, wer was von wo ausführen darf. Die Syntax dazu lautet:
User Rechner = Kommandos
Ein Beispiel: wenn der User mmustermann
vom Rechner pc01
das Script /usr/sbin/example.pl
ausführen können soll, dann müßte das so angegeben werden:
mmustermann pc01=/usr/sbin/example.pl
Wenn der User mmustermann
das von jedem Rechner ausführen können soll, dann verwendet man für die Rechner den Alias ALL
und die Zeile würde so aussehen:
mmustermann ALL=/usr/sbin/example.pl
Es gibt aber nicht nur den vorgegebenen Alias ALL, sondern man kann auch selbst für Gruppen von Programmen Aliasse anlegen
Mit
Cmnd_Alias
werden (andere) Aliasse für Programmgruppen angelegtUser_Alias ...
werden Aliasse für User angelegt undHost_Alias ...
werden Aliasse für Rechner angelegt.
Im gegebenen Beispiel werden nur Aliasse für Programme bereitgestellt. Es bedeutet
root ALL=ALL
root darf von allen Rechnern alle Programme ausführen. Die Zeile
%lehrer ALL=HTTPSW
bedeutet, alle Lehrer dürfen von allen Rechnern das Programm /usr/sbin/httpswitch ausführen.
einen Eintrag in sudoers erstellen
Nun wollen wir die am Anfang gestellt Aufgabe in Angriff nehmen. Es sollte der User wwwrun das Script /usr/sbin/example.pl ausführen dürfen. Damit würde sich folgende Zeile ergeben:
wwwrun ALL=/usr/sbin/example.pl
Das ist aber leider nicht optimal, denn der Apache (also der wwwrun) läuft ja auf dieser Maschine. Es wäre also sinnvoll, nur diesen Rechner (localhost) anzugeben
wwwrun localhost=/usr/sbin/example.pl
Hier gibt es aber ein Problem, weil nämlich sudo ein Passwort verlangt, wir aber nicht das Passwort von wwwrun übergeben wollen. Dazu gibt man das so an:
wwwrun localhost=NOPASSWD:/usr/sbin/example.pl
Die Datei sudoers würde nun so aussehen:
<source lang="text">
# sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the man page for the details on how to write a sudoers file. # # Host alias specification # Cmnd alias specification Cmnd_Alias ONLINE=/usr/sbin/online,/usr/sbin/onpassch,/usr/sbin/onipfwmasq Cmnd_Alias HTTPSW=/usr/sbin/httpswitch Cmnd_Alias MATERIAL=/usr/www/admin/material/material.sh # User specification root ALL=ALL %lehrer ALL=HTTPSW %online ALL=ONLINE %material ALL=MATERIAL wwwrun localhost=NOPASSWD:/usr/sbin/example.pl
</source>
Kosmetik
so richtig passt das aber noch nicht zum Stil der vorgegebenen Datei sudoers. wir erstellen also Alias für unser Script /usr/sbin/example.pl. Diesen nennen wir DEMO. Und weil wwwrun ein einzelner Nutzer genauso wie root ist, bringen wir den Eintrag gleich als zweiten.
<source lang="text">
# sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the man page for the details on how to write a sudoers file. # # Host alias specification # Cmnd alias specification Cmnd_Alias ONLINE=/usr/sbin/online,/usr/sbin/onpassch,/usr/sbin/onipfwmasq Cmnd_Alias HTTPSW=/usr/sbin/httpswitch Cmnd_Alias MATERIAL=/usr/www/admin/material/material.sh Cmnd_Alias DEMO=/usr/sbin/example.pl # User specification root ALL=ALL wwwrun localhost=NOPASSWD:DEMO %lehrer ALL=HTTPSW %online ALL=ONLINE %material ALL=MATERIAL
</source>
Weblinks