Entwicklerhandbuch/Sudo: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
K (hat „Delixs:Entwicklerhandbuch/Sudo“ nach „Entwicklerhandbuch/Sudo“ verschoben)
(Weblinks)
Zeile 11: Zeile 11:
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 31:
  %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
 
  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
  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 84:
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 105:
  %material      ALL=MATERIAL
  %material      ALL=MATERIAL
  wwwrun        localhost=NOPASSWD:/usr/sbin/example.pl  
  wwwrun        localhost=NOPASSWD:/usr/sbin/example.pl  
</source>




Zeile 105: Zeile 112:
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 134:
  %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>

Version vom 9. November 2009, 06:56 Uhr

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:

<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