GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann ich ein Skript immer als root ausführen lassen?

Seien Sie wirklich vorsichtig:Skripte in Kombination mit setuid sind gefährlich!

Sehen Sie sich bitte zuerst diese Frage/Antworten an, insbesondere diese Antwort und Sicherheitswarnung.

Wenn Sie Ihr Skript trotzdem mit setuid ausführen möchten set, dann kannst du ein kurzes C-Programm als Wrapper schreiben und die setuid setzen Bit auf der kompilierten Binärdatei.

Wrapper-Beispiel:

int main(void) {        
    setuid(0);
    clearenv();
    system("/absolute/path/to/your/script.sh");
}

Eine andere Lösung mit sudo (hier erwähnt):

  1. Verhindern Sie als Root den Schreibzugriff (und möglicherweise andere) auf Ihr Skript:

    chown root /absolute/path/to/your/script.sh
    chmod 700 /absolute/path/to/your/script.sh
    
  2. Stellen Sie sicher, dass niemand außer root das Skript ersetzen kann , z.B. indem Sie die Zugriffsrechte des übergeordneten Ordners ändern:

    chown root /absolute/path/to/your/
    chmod 755 /absolute/path/to/your/
    
  3. Ändern Sie die sudo-Zugriffsrechte in /etc/sudoers mit visudo :

    ALL    ALL = (root) NOPASSWD: /absolute/path/to/your/script.sh
    

    Weitere Details zu den Einstellungen (z. B. Zugriffsbeschränkung auf bestimmte Benutzer oder Gruppen) finden Sie in der Sudoers-Manpage.

Danach können alle Benutzer das Skript als root ohne Passwort ausführen:

sudo /absolute/path/to/your/script.sh

Dies ähnelt der Verwendung der Wrapper/Setuid-Lösung oben.


Der einfachste und sicherste Weg ist die Verwendung von SETUID-Bits in Dateiberechtigungen. Auf diese Weise werden Befehlsberechtigungen zu Dateibesitzerberechtigungen erhöht.

Um zu verhindern, dass das Skript editiert wird, setzen Sie nicht die Write-for-Everyone-Bits.


Linux
  1. Wie kann ich dieses Sed-Skript schneller machen?

  2. Führen Sie das Python-Skript über crontab aus

  3. Ein Verzeichnis kann in Unix nicht entfernt werden

  4. Wie mache ich eine Datei unter Linux dauerhaft schreibgeschützt, sodass selbst Root sie nicht bearbeiten kann?

  5. Führt ein Shell-Skript in der aktuellen Shell mit sudo-Berechtigung aus

Kann ein Skript ausführbar, aber nicht lesbar sein?

Wie lässt sich ein Skript rückwirkend als Root ausführen?

Wie führe ich einen Befehl in einem Shell-Skript aus?

Menükonfiguration kann nicht erstellt werden

Wie kann ich mit dem Fenstermanager ein Programm als root starten?

Kann eine .sh-Datei Malware sein?