Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 
Sudo ist ein Standard bei Linux, mit dem kontrolliert Programmausfuehrungsberechtigungen an normale User vergeben werden koennen. Das koennen z.B. Befehle sein, die man haeufiger aufruft, wie z.B. das Starten und stoppen von Daemons oder auch killen von Daemons. Hat man auf einem System mehrere Administratoren sollte man unbedingt sudo benutzen, denn dann wird immer im Log protokolliert, welcher User sich gerade per sudo root Rechte hat geben lassen.
 
 
Folgende Sichereitsregeln unbedingt beachten:
  1. Zentrale Konfigurationsdatei von sudo ist /etc/sudoers immer  mit visudo editieren!
  2. Nie su, sudo, visudo oder eine shell oder Programme mit escape Moeglichkeiten per sudo freigeben!
  3. Sehr genau auf die Parameter von den Befehlen aufpassen. Ansonsten kann ein simples cat oder chmod ein Sicherheitsloch ins System reissen!
  4. Niemals ein Program per sudo fuer einen User aufrufbar machen wenn er Schreibzugriff darauf hat!
 
Naheliegendster Weg uneingeschaenkte root Rechte zu erhalten:
  • su -
  • Nachteile:
  1.  
    1. Saemtliche root Rechte werden erhalten
    2. root Passwort wird benoetigt
    3. Keine Kontrolle moeglich welcher User root Rechte erlangt hat
  • Vorteile:
    1. Schnell ausfuehrbar
Wie kann man ein Befehl als ein anderer User ausfuehren?
/etc/sudoers:
hugo   ALL = (fritz) /usr/local/bin/Befehl

Aufruf von hugo: sudo -u fritz /usr/local/bin/Befehl oder
 sudo -u fritz Befehl

hugo wird nach seinem Passwort gefragt und kann dann den Befehl ausfuehren.

Wie kann man die Passwortabfrage bei sudo abstellen?

/etc/sudoers:
hugo   ALL = (fritz) NOPASSWD: /usr/local/bin/Befehl

Das ist aber nicht ungefaehrlich: Wenn jemand seinen Rechner verlaesst kann jeder die Befehle ohne Passwortabfrage ausfuehren. Dieses sollte also nur fuer Batchjobs etc gemacht werden.
Wie werden Parameter verboten?
/etc/sudoers:
hugo   ALL = (fritz) /usr/local/bin/Befehl ""

Durch Anhaengen von "" am Ende der Zeile.
 

Wie kann man Passwortaenderungen deligieren?

/etc/sudoers:
hugo   ALL = (root) /usr/bin/passwd alpha, /usr/bin/passwd beta
 
Damit kann hugo die Passwoerter von alpha und beta aendern. Wenn man eine Gruppe von Usern hat und deren Userids systematisch definiert sind geht es noch einfacher:

/etc/sudoers:
hugo   ALL = (root) /usr/bin/passwd gruppe[0-9][0-9]

erlaubt hugo, die Passwoerter aller userids der Form gruppe00, gruppe01, etc zu aendern.
Wie kann man Daemons starten und stoppen lassen?
/etc/sudoers:
 
User_Alias    SUBADMIN=hugo, fritz
 Cmd_Alias   DAEMON=/usr/sbin/rcsquid start,
                     /usr/sbin/rcsquid stop,
                     /usr/sbin/rcsquid restart
SUBADMIN ALL = (ALL) DAEMON

Diese Definition erlaubt hugo und fritz squid zu starten und zu stoppen.
 
Wie kann man einen Benutzer alle root Rechte geben mit ein paar Ausnahmen?
Hoechst unsicher und sollte nicht angewandt werden.
Ansonsten man sudo und man sudoers. Wer sich allerdings mit EBNF nicht auskennt wird etwas brauchen um die man Seiten zu verstehen.

Referenzen
 
 
 
Kommentar schreiben

*** Hinweis ***

Kommentare sind erwünscht. Aber um lästige Spamposts abweisen zu können gibt es ein paar Dinge die zu beachten sind:
  1. Kommentare mit dem Text http werden sofort zurückgewiesen mit der Meldung Sie sind nicht berechtigt den Tag zu verwenden. zz
  2. Kommentare werden manuell überprüft und es dauert deshalb in der Regel einen Tag bis sie veröffentlicht werden.

    Kommentare   
    #3 tee 2010-11-26 12:37
    ah verstehe. :oops:
    Zitieren
    #2 framp_ 2010-11-25 16:51
    Was ist eine escape Möglichkeit? Wenn ein Programm erlaubt in eine shell Umgebung zu kommen. Dann darf man zwar per sudo das Programm xyz aufrufen ABER da man aus dem Programm in die shell kommt kann man dann natürlich ALLE Befehle als der definierte User (i.a. root) ausführen :o
    Zitieren
    #1 tee 2010-11-25 12:49
    kannst du evtl. Punkt 2. der Sicherheitsregeln genauer beschreiben. Danke
    Zitieren