Entwicklerhandbuch/Sudo: Unterschied zwischen den Versionen
Kirmse (Diskussion | Beiträge) (erster Fassung von dieser Seite) |
(kirmse) |
||
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
__NOTOC__ | __NOTOC__ | ||
{{ | |||
{{EditStatus|1|Kirmse}} | |||
Zeile 11: | Zeile 12: | ||
Dazu muss im Verzeichnis <code>/etc</code> die Datei <code>sudoers</code> editiert werden. diese Datei sieht bei <code>delixs</code> so aus: | Dazu muss im Verzeichnis <code>/etc</code> die Datei <code>sudoers</code> editiert werden. diese Datei sieht bei <code>delixs</code> so aus: | ||
<source lang="text"> | |||
# sudoers file. | # sudoers file. | ||
# | # | ||
Zeile 30: | Zeile 32: | ||
%online ALL=ONLINE | %online ALL=ONLINE | ||
%material ALL=MATERIAL | %material ALL=MATERIAL | ||
</source> | |||
Der entscheidende Abschnitt ist der unter <code># User specification</code>. Dort wird angegeben, wer was von wo ausführen darf. Die Syntax dazu lautet: | Der entscheidende Abschnitt ist der unter <code># User specification</code>. Dort wird angegeben, wer was von wo ausführen darf. Die Syntax dazu lautet: | ||
User Rechner = Kommandos | |||
Ein Beispiel: wenn der User <code>mmustermann</code> vom Rechner <code>pc01</code> das Script <code>/usr/sbin/example.pl</code> ausführen können soll, dann müßte das so angegeben werden: | Ein Beispiel: wenn der User <code>mmustermann</code> vom Rechner <code>pc01</code> das Script <code>/usr/sbin/example.pl</code> ausführen können soll, dann müßte das so angegeben werden: | ||
mmustermann pc01=/usr/sbin/example.pl | |||
Wenn der User <code>mmustermann</code> das von jedem Rechner ausführen können soll, dann verwendet man für die Rechner den Alias <code>ALL</code> und die Zeile würde so aussehen: | Wenn der User <code>mmustermann</code> das von jedem Rechner ausführen können soll, dann verwendet man für die Rechner den Alias <code>ALL</code> und die Zeile würde so aussehen: | ||
Zeile 79: | Zeile 85: | ||
Die Datei sudoers würde nun so aussehen: | Die Datei sudoers würde nun so aussehen: | ||
<source lang="text"> | |||
# sudoers file. | # sudoers file. | ||
# | # | ||
Zeile 99: | Zeile 106: | ||
%material ALL=MATERIAL | %material ALL=MATERIAL | ||
wwwrun localhost=NOPASSWD:/usr/sbin/example.pl | wwwrun localhost=NOPASSWD:/usr/sbin/example.pl | ||
</source> | |||
Zeile 105: | Zeile 113: | ||
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. | 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. | # sudoers file. | ||
# | # | ||
Zeile 126: | Zeile 135: | ||
%online ALL=ONLINE | %online ALL=ONLINE | ||
%material ALL=MATERIAL | %material ALL=MATERIAL | ||
</source> | |||
== Weblinks == | |||
* http://www.gentoo.de/doc/de/sudo-guide.xml | |||
---- | ---- | ||
<div align="right">[[Delixs:Entwicklerhandbuch|zurück]] | [[Hauptseite]]</div> | <div align="right">[[Delixs:Entwicklerhandbuch|zurück]] | [[Hauptseite]]</div> | ||
[[Kategorie:Entwicklerhinweise]] |
Aktuelle Version vom 16. März 2012, 12:59 Uhr
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