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.
 
Der ssh Server wird hier behandelt.
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:
  1.  
    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:

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
 
 

Kommentar schreiben

Spam Kommentare sind sinnlos !
Vor der Publizierung wird jeder Beitrag auf Spam geprüft. Leider dauert es deswegen bis ein Kommentar sichtbar wird. Dafür erhält aber kein Subscriber Spam eMails.
Die eMail ist optional und nicht öffentlich sichtbar. Sie ist notwendig um eMail Benachrichtigungen zu Antworten auf Kommentare zu erhalten und wird u.U. genutzt um offline zu kommunizieren.

Spam comments are useless !
Any comment will be reviewed first and checked for spam. Unfortunately this delays the publishing of comments but will protect subscribers from spam.
eMail is optional and hidden and is required get update notifications for any comments and may be used to contact you offline