Entwicklerhandbuch/Sudo

Aus Delixs
Zur Navigation springen Zur Suche springen


Diese Seite ist momentan eine Baustelle im Zustand: 1

Wird bearbeitet von: Kirmse
Hilfe zum Bearbeitungsstatus: Hilfe:Status eines Artikels


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 angelegt
  • User_Alias ... werden Aliasse für User angelegt und
  • Host_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



zurück | Hauptseite