Wie kann ich Benutzern erlauben, ein Skript mit root-Berechtigungen auszuführen?

7

Angesichts der Gefahren von SUID-Shell-Skripten gibt es einen sichereren Weg Passwortlosen Zugriff auf Skripte (bash, PHP) mit Root-Rechten in Linux geben?

(Ubuntu 8.10)

    
Ken 29.12.2008, 12:09
quelle

9 Antworten

13

Sie könnten sudo in Betracht ziehen.

Obwohl nicht "passwortlos", muss der Benutzer nicht das root-Passwort erhalten. Es kann auch einen Audit-Trail für die Verwendung des Skripts bereitstellen.

edit: Laut Kommentar von Chris gibt es eine Option, für bestimmte Befehle gar kein Passwort zu benötigen, siehe hier für Details. Es kann auch so eingestellt werden, dass das Passwort nicht übermäßig angefordert wird, d. H. Eine Eingabe des Passworts kann für mehrere Befehle während einer Nutzungsdauer gut sein.

Übrigens, Sudo ist in Ubuntu integriert und gut mit Gnome integriert. Wenn Ubuntu Sie auffordert, Ihr Passwort für privilegierte Operationen einzugeben, ist dies Sudo unter der Haube.

    
frankodwyer 29.12.2008, 12:10
quelle
15

    
Yuval Adam 29.12.2008 12:33
quelle
6

Überprüfe unbedingt den Abschnitt " VERHINDERN VON SHELL ESCAPES " auf der Sudoers-Manpage, wenn Sie gehen die Sudo-Route.

    
Caleb Groom 30.12.2008 02:49
quelle
5

Ich würde sudo empfehlen. Stellen Sie sicher, dass Sie Ihre sudoers -Datei entsprechend anpassen. und ja, Sie können zulassen, dass einige Befehle ausgeführt werden, ohne dass ein Passwort angefordert wird.

    
Chris Jester-Young 29.12.2008 12:11
quelle
4

Das Konfigurieren von sudo, damit normale Benutzer Shell-Skripte mit erhöhten Rechten ausführen können, ist aus Sicherheitsgründen nicht besser, als das Skript suid root zu machen. Alle Fallstricke bestehen noch. Stattdessen sollten Sie ein geeignetes Programm schreiben, das umfangreiche Sicherheitsprüfungen durchführt. Einige Punkte zu beachten:

  • Schreib es nicht in C, du wirst dich in beide Füße schießen.
  • Überprüfen Sie alle Eingaben.
  • Drop-Privilegien so schnell wie möglich.
  • Halten Sie es kurz.     
  • Kim Stebel 29.12.2008 12:32
    quelle
    2

    Da sudo bereits erwähnt wurde, sollten Sie je nach Ihren Anforderungen verschiedene Sandbox-Umgebungen in Erwägung ziehen, z. B. Gefängnis oder ähnlich.

        
    csl 29.12.2008 12:23
    quelle
    1

    Für eine wirklich schwergewichtige Lösung sollten Sie ein MAC-System (Mandatory Access Control) wie SELinux, AppArmor, TrustedBSD usw. in Erwägung ziehen.

        
    Paweł Hajdan 30.12.2008 14:59
    quelle
    1

    Um die Sicherheit zu verbessern, überlegen Sie, ob es möglich ist, die Operation als spezieller Benutzer oder Gruppe auszuführen, die genau die Zugriffsrechte hat, die dafür benötigt werden. Dann können Sie das Skript setuid / setgid für diesen Benutzer oder diese Gruppe erstellen.

        
    starblue 30.12.2008 09:10
    quelle
    0

    Wenn der Anwendungsfall eine Maschine ist, die unter VirtualBox läuft und Sicherheit kein Problem ist, wollen Sie nur eine Lichtschranke, um sich am Fuß nicht zu erschießen, was dann? (Dann machen die Sicherheitsargumente keinen Sinn, da es keine Rolle spielt, ob die Maschine von einem Außenseiter kompromittiert wird, der sie sowieso nicht sehen kann, weil VirtualBox sie über NAT isoliert.)

        
    John Allsup 23.10.2013 11:21
    quelle