Kontrolliertes Ausfuehren von Befehlen als root: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
(Teilweise neu überarbeitet)
Zeile 1: Zeile 1:
 
Autor: [[Benutzer:framp|framp]]
 
Autor: [[Benutzer:framp|framp]]
  
Den Benutzer root sollte man nur benutzen, wenn man administrative Dinge auf einem Linux Rechner zu tun hat. Ansonsten sollte man immer als normaler User arbeiten, denn als root darf man eben alles - und kann sich unbeabsichtigt sein System zerstoeren.
+
Den Benutzer '''root''' sollte man nur dann benutzen, wenn administrative Dinge auf einem Linux Rechner zu tun sind. Ansonsten sollte man immer als normaler User arbeiten. Als root darf man eben alles - und kann sich so auch unbeabsichtigt sein System zerstören. Ein einziger fehlerhafter oder unüberlegter Befehl, (als User würde er nur einen begrenzten Schaden an den Dateien dieses Users anrichte können) als root abgesetzt, könnte das gesamte System so irreparabel beschädigen, das es nur aus einem Backup oder durch Neuinstallation wieder zu reparieren ist.  
  
Beispiel:
+
Die selbe Regel gilt natürlich auch unter Windows und alle anderen Betriebssystemen, wo man für normale "Arbeit" tunlichst nicht mit Administrator-Kennung angemeldet sein sollte.
Es kommt immer wieder mal vor dass in chats ein Linux Anfaenger aufgefordert wird
 
Code:
 
rm -rf /
 
  
oder verklausuliert
+
== Möglichkeiten von Linux Befehle unter andere Userkennung auszuführen ==
  
echo "rpm -qai && rm -rf /" >> /rebuild_rpm.sh && sh /rebuild_rpm.sh
+
Normalerweise benutzt man bei Linux und anderen UNIXartigen Betriebssystemen dazu '''[http://www.phpman.info/index.php/man/su/1 su -]'''(eng. '''s'''ubstitute '''u'''ser) und erhält damit root Rechte und kann dann auf dem System alles machen, was das Herz begehrt, oder besser, alles was die Administration fordert. Dieses sollte man aber nur bei Administrationaufgaben machen. Für regelmäßige Befehle, die als root abgegeben werden müssen, oder besonders für Aufgaben die anderen Usern überantwortet werden, für die man jedoch Rootrechte benötigt, sind andere Methoden zu bevorzugen:
  
einzugeben.
+
# die Benutzung von '''[http://www.phpman.info/index.php?parameter=sudo&mode=man sudo]'''
 +
# [http://www.phpman.info/index.php?parameter=ssh&mode=man ssh] auf '''localhost''' und [[Einrichten von public keys mit ssh|Benutzung von shared keys]]
  
<EDIT> (see comments of Draco and jengelh http://www.linux-club.de/ftopic65282.html )
 
Als normaler User loescht man dann alle seine Dateien, auf die man Schreibzugriffe hat (im wesentlichen /home). Aber als root loescht man damit sein gesamtes System Rolling Eyes !. In beiden Faellen liegt hoffentlich ein aktuelles Backup vor Cool . </EDIT>
 
Dieselbe Regel gilt natuerlich auch unter Windows wo man tunlichst nicht als Administrator angemeldet sein sollte da man sonst den bei Windows im Gegensatz zu Linux etwas haeufiger vorkommenden Viren Tuer und Tor oeffnet.
 
  
Normalerweise benutzt man dazu su - und erhaelt damit root Rechte und kann dann auf dem System alles machen was das Herz begehrt. Dieses sollte man aber nur bei Administrationsaufgaben machen. Ansonsten bieten sich die folgenden Moeglichkeiten an sehr kontrolliert immer wiederkehrende root Befehle auszufuehren:
 
  
1. sudo
+
=== der Befehl su ===
2. ssh auf localhost und Benutzung von shared keys
+
'''su''' dieser Befehl erlaubt es eine Shell mit der Userkennung eines anderen Users zu starten. Wird er mit einer der Optionen '''-, -l, --login''' gestartet, wir die eine Loginshell gestartet, das bedeutet es wird die komplette Konfiguration wie für ein neues Anmelden dieses Users durchlaufen.
 +
Wird kein User angegeben, dann wird der User root angenommen.
 +
su              # startet neue Shell als User root, ohne komplettes Login als '''root'''
 +
su -            # startet neue Shell als User root mit komplettem Login als '''root'''
 +
su - user1      # startet neue Shell als User user1 mit kompletter Login als '''user1'''
 +
Wird '''su''' als normaler User gestartet, dann wird dabei das Passwort des neuen Users benötigt. Wird '''su''' als root gestartet, erfolgt keine Passwortabfrage.
 +
 +
'''Nachteile:'''
 +
# Sämtliche root Rechte werden erhalten
 +
# root Passwort wird benötigt
 +
# Keine Kontrolle möglich, welcher User root Rechte erlangt hat
  
Natuerlich bieten sich diese Moeglichkeiten auch an wenn man root Rechte deligieren muss oder moechte.
+
'''Vorteile:'''
 +
# Schnell ausführbar
  
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!
 
  
 +
=== der Befehl sudo ===
 +
'''sudo''' ist ein Standard bei Linux, mit dem kontrolliert Programmausführungberechtigungen an normale User vergeben werden können. Das können z.B. bestimmte Befehle sein, die dieser User häufiger benötigt, wie z.B. das Starten und stoppen 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.
 +
Die Konfiguration erfolgt über eine Konfigurationsdatei [http://www.phpman.info/index.php/man/sudoers/5 '''/etc/sudoers''']. Dort kann genau definiert werden wer was als root oder anderer User ausführen darf, auch sind Anpassungen für die Shellkonfiguration für diese Befehle möglich. Für die Änderungen der Konfiguration gibt es ein spezielles Programm [http://www.phpman.info/index.php/man/visudo/8 '''visudo''']. Dieses Programm verhindert grobe Fehler innerhalb der /etc/sudoers.
  
Naheliegendster Weg uneingeschaenkte root Rechte zu erhalten:
+
'''Folgende Sicherheitsregeln unbedingt beachten'''
  
* su -
+
# Zentrale Konfigurationsdatei von sudo ist /etc/sudoers immer mit visudo editieren!
* Nachteile:
+
# Nie su, sudo, visudo oder eine shell oder Programme mit escape Möglichkeiten per sudo freigeben!
 +
# Sehr genau auf die Parameter von den Befehlen aufpassen. Ansonsten kann ein simples [http://www.phpman.info/index.php?parameter=cat&mode=man cat] oder [http://www.phpman.info/index.php?parameter=chmod&mode=man chmod] ein Sicherheitsloch ins System reissen!
 +
# Niemals ein Programm per sudo für einen User aufrufbar machen, wenn er Schreibzugriff darauf hat!
  
*1. Saemtliche root Rechte werden erhalten
 
*2. root Passwort wird benoetigt
 
*3. Keine Kontrolle moeglich welcher User root Rechte erlangt hat
 
  
* Vorteile:
+
== Beispiele ==
*1. Schnell ausfuehrbar
 
  
Wie kann man ein Befehl als ein anderer User ausfuehren?
+
=== Wie kann man ein Befehl als ein anderer User ausführen ===
Code:
+
Eintrag in der '''/etc/sudoers:'''
/etc/sudoers:
 
 
  hugo  ALL = (fritz) /usr/local/bin/Befehl
 
  hugo  ALL = (fritz) /usr/local/bin/Befehl
  
 
+
Aufruf von hugo:
Aufruf von hugo: sudo -u fritz /usr/local/bin/Befehl oder
+
sudo -u fritz /usr/local/bin/Befehl oder
 
  sudo -u fritz Befehl
 
  sudo -u fritz Befehl
 +
hugo wird nach seinem Passwort gefragt und kann dann den Befehl ausführen.
  
hugo wird nach seinem Passwort gefragt und kann dann den Befehl ausfuehren.
+
=== Wie kann man die Passwortabfrage bei sudo abstellen ===
 
+
Eintrag in der '''/etc/sudoers:'''
Wie kann man die Passwortabfrage bei sudo abstellen?
 
 
 
Code:
 
/etc/sudoers:
 
 
  hugo  ALL = (fritz) NOPASSWD: /usr/local/bin/Befehl
 
  hugo  ALL = (fritz) NOPASSWD: /usr/local/bin/Befehl
  
 +
'''Bemerkung'''
 +
''Das ist aber nicht ungefährlich: Wenn '''hugo''' den Rechner verlässt ohne sich abzumelden, oder der Account von '''hugo''' geknackt wird, könnte jeder den Befehl jetzt ohne Passwortabfrage ausführen. Dieses sollte also nur für Batchjobs etc. gemacht werden.
  
Das ist aber nicht ungefaehrlich: Wenn jemand seinen Rechner verlaesst oder der Account geknackt wurde kann jeder die Befehle ohne Passwortabfrage ausfuehren. Dieses sollte also nur fuer Batchjobs etc gemacht werden.
+
=== Wie werden Parameter verboten ===
 
+
Eintrag in der '''/etc/sudoers:'''
Wie werden Parameter verboten?
 
 
 
Code:
 
/etc/sudoers:
 
 
  hugo  ALL = (fritz) /usr/local/bin/Befehl ""
 
  hugo  ALL = (fritz) /usr/local/bin/Befehl ""
 +
Durch Anhängen von "" am Ende der Zeile ist es jetzt nicht mehr möglich, dem Befehl noch irgendwelche Parameter hinzuzufügen.
  
 
+
=== Wie kann man Passwortänderungen deligieren ===
Durch Anhaengen von "" am Ende der Zeile.
+
Eintrag in der '''/etc/sudoers:'''
 
 
Wie kann man Passwortaenderungen deligieren?
 
 
 
Code:
 
/etc/sudoers:
 
 
  hugo  ALL = (root) /usr/bin/passwd alpha, /usr/bin/passwd beta
 
  hugo  ALL = (root) /usr/bin/passwd alpha, /usr/bin/passwd beta
 +
Damit kann jetzt hugo die Passwörter von alpha und beta ändern. Wenn man eine Gruppe von Usern hat und deren UserIDs systematisch definiert sind, geht es noch einfacher:
  
 
+
Eintrag in der '''/etc/sudoers:'''
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:
 
 
 
Code:
 
/etc/sudoers:
 
 
  hugo  ALL = (root) /usr/bin/passwd gruppe[0-9][0-9]
 
  hugo  ALL = (root) /usr/bin/passwd gruppe[0-9][0-9]
 +
erlaubt hugo, die Passwoerter aller userIDs der Form gruppe00, gruppe01, etc zu ändern.
  
 
+
=== Wie kann man Daemons starten und stoppen lassen ===
erlaubt hugo, die Passwoerter aller userids der Form gruppe00, gruppe01, etc zu aendern.
+
Eintrag in der '''/etc/sudoers:'''
 
 
Wie kann man Daemons starten und stoppen lassen?
 
 
 
Code:
 
/etc/sudoers:
 
 
  User_Alias    SUBADMIN=hugo, fritz
 
  User_Alias    SUBADMIN=hugo, fritz
 
  Cmd_Alias  DAEMON=/usr/sbin/rcsquid start,
 
  Cmd_Alias  DAEMON=/usr/sbin/rcsquid start,
Zeile 101: Zeile 84:
 
                     /usr/sbin/rcsquid restart
 
                     /usr/sbin/rcsquid restart
 
  SUBADMIN ALL = (ALL) DAEMON
 
  SUBADMIN ALL = (ALL) DAEMON
 +
Diese Definition erlaubt hugo und fritz squid zu starten und zu stoppen.
  
  
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.
+
=== Über ssh einen Benutzer alle root Rechte geben, jedoch mit ein paar Ausnahmen ===
 +
'''Bemerkung:''' Diese Methode ist höchst unsicher und sollte nur beschränkt angewandt werden.
  
Ansonsten man sudo und man sudoers. Wer sich allerdings mit EBNF nicht auskennt wird etwas brauchen um die man Seiten zu verstehen.
+
[http://www.phpman.info/index.php?parameter=ssh&mode=man '''ssh'''] kann man auch auf '''localhost''' anwenden und dadurch gezielt Usern die Ausführung von root Befehlen ermöglichen. Der Nachteil gegenüber sudo ist, dass keine Protokollierung der ausgeführten Befehle stattfindet. Ausserdem muss der root login dazu in dem [http://www.phpman.info/index.php?parameter=sshd&mode=man '''sshd daemon'''] erlaubt sein, was jeodch im Normalfall ausgeschalt sein sollte. Deshalb sollte man in diesem Fall einen zweiten '''sshd daemon''' auf einem freien Port aufsetzen (im Beispiel 4711), der dann seine eigene Konfigurationsdatei hat mit:
  
ssh kann man auch auf localhost anwenden und dadurch gezielt usern die Ausfuehrung von root Befehlen ermoeglichen. Der Nachteil zu sudo ist, dass keine Protokollierung der ausgefuehrten Befehle stattfindet. Ausserdem muss der root login dazu in dem sshd daemon erlaubt sein was man aber immer ausschalten sollte. Deshalb sollte man in diesem Fall einen zweiten sshd daemon auf einem freien Port aufsetzen (im Beispiel 4711), der eine eigene Konfigurationsdatei hat mit:
+
{{Überarbeiten}}--[[Benutzer:Robi|Robi]] 02:05, 29. Okt 2006 (CEST)
 +
das hier muss noch mal mit Vergleich des Orginalbeitrages überprüft werden
  
 
*1. Port 4711
 
*1. Port 4711
Zeile 122: Zeile 105:
 
*7. Ein kurzes Script erstellen, mit dem man einfach die Befehler per local ssh aufrufen kann
 
*7. Ein kurzes Script erstellen, mit dem man einfach die Befehler per local ssh aufrufen kann
  
Code:
+
 
 
  ssh -p 4711 -l root localhost $@
 
  ssh -p 4711 -l root localhost $@
  
Zeile 155: Zeile 138:
  
  
Weitere Informationen zu sudo:
 
Sudo Main Page (Englisch)
 
 
... und natuerlich man sudo
 
  
 
Als Vorlage zu diesem Thema diente http://www.framp.de/linux/?Security:Kontrolliertes_Ausfuehren_von_root_Programmen_von_normalen_User
 
Als Vorlage zu diesem Thema diente http://www.framp.de/linux/?Security:Kontrolliertes_Ausfuehren_von_root_Programmen_von_normalen_User
  
eingefügt von --[[Benutzer:Yehudi|Yehudi]] 23:13, 30. Aug 2006 (CEST)
+
* eingefügt von --[[Benutzer:Yehudi|Yehudi]] 23:13, 30. Aug 2006 (CEST)  
 +
* überarbeitet [[Benutzer:Robi|Robi]] 02:05, 29. Okt 2006 (CEST) letzter Abschnitt noch offen
  
 
[[Category:Security]]
 
[[Category:Security]]

Version vom 29. Oktober 2006, 00:05 Uhr

Autor: framp

Den Benutzer root sollte man nur dann benutzen, wenn administrative Dinge auf einem Linux Rechner zu tun sind. Ansonsten sollte man immer als normaler User arbeiten. Als root darf man eben alles - und kann sich so auch unbeabsichtigt sein System zerstören. Ein einziger fehlerhafter oder unüberlegter Befehl, (als User würde er nur einen begrenzten Schaden an den Dateien dieses Users anrichte können) als root abgesetzt, könnte das gesamte System so irreparabel beschädigen, das es nur aus einem Backup oder durch Neuinstallation wieder zu reparieren ist.

Die selbe Regel gilt natürlich auch unter Windows und alle anderen Betriebssystemen, wo man für normale "Arbeit" tunlichst nicht mit Administrator-Kennung angemeldet sein sollte.

Möglichkeiten von Linux Befehle unter andere Userkennung auszuführen

Normalerweise benutzt man bei Linux und anderen UNIXartigen Betriebssystemen dazu su -(eng. substitute user) und erhält damit root Rechte und kann dann auf dem System alles machen, was das Herz begehrt, oder besser, alles was die Administration fordert. Dieses sollte man aber nur bei Administrationaufgaben machen. Für regelmäßige Befehle, die als root abgegeben werden müssen, oder besonders für Aufgaben die anderen Usern überantwortet werden, für die man jedoch Rootrechte benötigt, sind andere Methoden zu bevorzugen:

  1. die Benutzung von sudo
  2. ssh auf localhost und Benutzung von shared keys


der Befehl su

su dieser Befehl erlaubt es eine Shell mit der Userkennung eines anderen Users zu starten. Wird er mit einer der Optionen -, -l, --login gestartet, wir die eine Loginshell gestartet, das bedeutet es wird die komplette Konfiguration wie für ein neues Anmelden dieses Users durchlaufen. Wird kein User angegeben, dann wird der User root angenommen.

su              # startet neue Shell als User root, ohne komplettes Login als root 
su -            # startet neue Shell als User root mit komplettem Login als root
su - user1      # startet neue Shell als User user1 mit kompletter Login als user1

Wird su als normaler User gestartet, dann wird dabei das Passwort des neuen Users benötigt. Wird su als root gestartet, erfolgt keine Passwortabfrage.

Nachteile:

  1. Sämtliche root Rechte werden erhalten
  2. root Passwort wird benötigt
  3. Keine Kontrolle möglich, welcher User root Rechte erlangt hat

Vorteile:

  1. Schnell ausführbar



der Befehl sudo

sudo ist ein Standard bei Linux, mit dem kontrolliert Programmausführungberechtigungen an normale User vergeben werden können. Das können z.B. bestimmte Befehle sein, die dieser User häufiger benötigt, wie z.B. das Starten und stoppen 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. Die Konfiguration erfolgt über eine Konfigurationsdatei /etc/sudoers. Dort kann genau definiert werden wer was als root oder anderer User ausführen darf, auch sind Anpassungen für die Shellkonfiguration für diese Befehle möglich. Für die Änderungen der Konfiguration gibt es ein spezielles Programm visudo. Dieses Programm verhindert grobe Fehler innerhalb der /etc/sudoers.

Folgende Sicherheitsregeln 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 Möglichkeiten 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 Programm per sudo für einen User aufrufbar machen, wenn er Schreibzugriff darauf hat!


Beispiele

Wie kann man ein Befehl als ein anderer User ausführen

Eintrag in der /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 ausführen.

Wie kann man die Passwortabfrage bei sudo abstellen

Eintrag in der /etc/sudoers:

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

Bemerkung Das ist aber nicht ungefährlich: Wenn hugo den Rechner verlässt ohne sich abzumelden, oder der Account von hugo geknackt wird, könnte jeder den Befehl jetzt ohne Passwortabfrage ausführen. Dieses sollte also nur für Batchjobs etc. gemacht werden.

Wie werden Parameter verboten

Eintrag in der /etc/sudoers:

hugo   ALL = (fritz) /usr/local/bin/Befehl ""

Durch Anhängen von "" am Ende der Zeile ist es jetzt nicht mehr möglich, dem Befehl noch irgendwelche Parameter hinzuzufügen.

Wie kann man Passwortänderungen deligieren

Eintrag in der /etc/sudoers:

hugo   ALL = (root) /usr/bin/passwd alpha, /usr/bin/passwd beta

Damit kann jetzt hugo die Passwörter von alpha und beta ändern. Wenn man eine Gruppe von Usern hat und deren UserIDs systematisch definiert sind, geht es noch einfacher:

Eintrag in der /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 ändern.

Wie kann man Daemons starten und stoppen lassen

Eintrag in der /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.


Über ssh einen Benutzer alle root Rechte geben, jedoch mit ein paar Ausnahmen

Bemerkung: Diese Methode ist höchst unsicher und sollte nur beschränkt angewandt werden.

ssh kann man auch auf localhost anwenden und dadurch gezielt Usern die Ausführung von root Befehlen ermöglichen. Der Nachteil gegenüber sudo ist, dass keine Protokollierung der ausgeführten Befehle stattfindet. Ausserdem muss der root login dazu in dem sshd daemon erlaubt sein, was jeodch im Normalfall ausgeschalt sein sollte. Deshalb sollte man in diesem Fall einen zweiten sshd daemon auf einem freien Port aufsetzen (im Beispiel 4711), der dann seine eigene Konfigurationsdatei hat mit:

Höhe=24px
Dieses HOWTO zu Linux oder der Abschnitt davon braucht eine Überarbeitung. Weitere Informationen findest Du hier. Deine Hilfe ist gefragt, das HOWTO zu verbessern. Danach entsorge bitte diese Signierung.

--Robi 02:05, 29. Okt 2006 (CEST)

das hier muss noch mal mit Vergleich des Orginalbeitrages überprüft werden 
  • 1. Port 4711
  • 2. PermitRootLogin without-password
  • 3. PubKeyAuthentication yes

Rootlogin ohne passwort und NUR pubkey authentication

  • 4. Aufnahme von from="127.0.0.1" und command="..." in authorized_keys so dass die Befehle nur vom lokalen System aufgerufen werden koennen
  • 5. Kopieren der public keys der User, die Befehle per ssh ausfuehren koennen sollen in ~/root/.ssh/authorized_keys und Einschraenkung der Berechtigung mit command="/usr/sbin/rcsquid start". Dieses muss leider fuer jeden Befehl erlaubten getan werden. Alternative: s.u. Keine Zeile ohne command in authorized_keys stellen denn sonst hat der user uneingeschraenkten root Zugriff!
  • 6. Schutz des sshd ports 4711 mit iptables vor externem Zugriff
  • 7. Ein kurzes Script erstellen, mit dem man einfach die Befehler per local ssh aufrufen kann


ssh -p 4711 -l root localhost $@


Beispiel ~/root/.ssh/authorized_keys:

command="/usr/sbin/rcsquid start" ssh-rsa AAAAB3NzaC1 ....

Wie mehrere Befehle einfacher zulassen?

Ein Script erstellen, welches in einem Switch die Befehle enthaelt, die ausgefuehrt werden duerfen. Dieses Script (z.B. /usr/local/sbin/ssh-for-hugo) in die authorized_keys aufnehmen, also

command="/usr/local/sbin/ssh-for-hugo $SSH_ORIGINAL_COMMAND" ssh-rsa AAAAB3NzaC1 ....

Das Script sieht dann etwa so aus: Code:

case "$1" in
   rcsquid-start)
         /usr/sbin/rcsquid start
         ;;
   rcsquid-stop)
         /usr/sbin/rcsquid stop
         ;;
   rcsquid-restart)
       /usr/sbin/rcsquid restart
         ;;
   *)
      echo "Illegal request rejected" 1>&2
      exit 1
   ;;
esac


Als Vorlage zu diesem Thema diente http://www.framp.de/linux/?Security:Kontrolliertes_Ausfuehren_von_root_Programmen_von_normalen_User

  • eingefügt von --Yehudi 23:13, 30. Aug 2006 (CEST)
  • überarbeitet Robi 02:05, 29. Okt 2006 (CEST) letzter Abschnitt noch offen