Entwicklerhandbuch/Sudo

Aus Delixs
Zur Navigation springen Zur Suche springen
Uberarbeiten Diese Seite sollte nochmals überarbeitet werden. Eine Begründung befindet sich in der Regel unter Diskussion (oben).


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:

# 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

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:

# 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 


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.

# 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



zurück | Hauptseite