Shell-Skript - Sudo-Berechtigungen verloren im Laufe der Zeit

7

Ich habe ein einfaches Bash-Skript erstellt, das seine Super-Benutzerrechte im gesamten Skript behalten muss. Leider, aber verständlich, verliert das Skript seine sudo -elevierten Berechtigungen, wenn sleep auftritt. Nicht gut für mich:

%Vor%

Ich habe daran gedacht, sleep durch eine while-Schleife zu ersetzen, die das sudo am Leben erhält, aber ich bin mir ziemlich sicher, dass es bessere Möglichkeiten gibt, die sudo -permissions im gesamten Skript zu behalten?

Danke

    
Industrial 03.05.2011, 08:06
quelle

6 Antworten

10

Die Flexibilität von sudo wird weit unterschätzt. Dies führt zu sehr schlechten Praktiken (wie die sudo su - Kanon-Kugel Operation Methode).

Eine viel bessere Methode besteht darin, die Befehle, die Sie zulassen möchten ausdrücklich zu erlauben, ohne ein Passwort zu verwenden :

%Vor%

Sie können dies optional für bestimmte Benutzer von bestimmten Hosts ausführen, die als bestimmte Admin-Benutzer ausgeführt werden. Sie können sogar verhindern, dass Benutzer Shell Escapes als Parameter übergeben. Sie können sudo verhindern, dass das gestartete Programm dynamisch weitere Anwendungen ausführt, etc. etc. Sie werden die Man-Page für sudoers (und Lesen Sie unbedingt die Verfahren zum Bearbeiten dieser speziellen Datei!) .

Hier ist ein kleiner Vorgeschmack auf die Dinge ( von hier ):

%Vor%     
sehe 01.06.2011, 08:39
quelle
5

Sie können dieses Zeitlimit anpassen, indem Sie es zu / etc / sudoers

hinzufügen %Vor%

Aber es ist viel einfacher zu laufen

%Vor%     
Timofey Stolbov 03.05.2011 08:30
quelle
4

Hier ist ein Workaround:

%Vor%     
karl 03.05.2011 08:49
quelle
2

Das ist mein Weg:

%Vor%     
ydk2 07.02.2013 09:38
quelle
2

Arbeiten streng innerhalb eines Skripts (und nicht die Bearbeitung der sudoers-Datei oder das Skript über sudo ./script.sh Aufruf), hier ist was ich denke, die sauberste Methode ist.

%Vor%

Im Grunde definiert dies ein Paar Funktionen zum Aktivieren und Deaktivieren des Sudo-Modus. Der Aufruf startsudo , bevor Sie sudo betriebenen Code authentifiziert mit sudo, Gabeln eines Hintergrund sudo-erfrischende Schleife ausgeführt wird, speichert die PID-Schleife und setzt ein Signal trap sudo-Modus zu stoppen, wenn Sie Strg + C gedrückt wird. Aufrufe stopsudo tötet die Schleife, löscht das Signal trap und invalidiert die frühere Authentifizierung mit Sudo.

Nachdem Sie diese Funktionen in Ihr Skript kopiert haben, verwenden Sie sie wie folgt.

%Vor%

Ich mag @karl für die Einfachheit danke des inlining die sudo-erfrischende Schleife und @sehe für den Hinweis auf, dass ein Signal Fall verwendet werden soll, um die Schleife zu töten, wenn es normalerweise nicht getötet wird. Beide Ideen verbessert mein Btrfs Backup-Skript , die eine sudo verwendet -refreshing loop, um zu vermeiden, den Benutzer erneut aufzufordern, nachdem das Backup eines Subvolumes länger dauert als das Zeitlimit von sudo.

    
Mark Haferkamp 30.05.2015 13:58
quelle
0

Erhalte einmal root-Rechte:

%Vor%     
Quentin 01.06.2011 08:25
quelle

Tags und Links