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

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

Ich schreibe ein Shell-Skript, das mit Root-Rechten ausgeführt werden muss.

Ich kann mit sudo -nv || echo "no sudo" , aber das hilft mir nicht, wenn seine Zugangsdaten immer noch von sudo zwischengespeichert werden , aber mein Skript hat er damit nicht aufgerufen. Ich habe also keine Möglichkeit, auf einen Benutzer zu reagieren, und rufe mein Skript nicht mit sudo auf.

Ich könnte sudo einfügen vor jedem Befehl, der es benötigt, also würde es ausreichen, nur zu prüfen, ob der Benutzer Root-Rechte hat, aber es scheint mir, dass es eine bessere Lösung geben sollte.

Ich suche nach einem Befehl, den ich in mein Skript einbauen kann, der den Benutzer nach Root-Rechten fragt und, falls vorhanden, den Rest des Skripts so ausführt, als ob der Benutzer es überhaupt mit Root-Rechten aufgerufen hätte.

Was ich will:

#!/bin/bash

if ! command; then        # what I'm looking for
    echo "This script needs root privileges."
    exit 1
fi

mv /bin/cmd1 /bin/cmd2    # requires root

Zweimal bearbeitet

Akzeptierte Antwort:

Testen Sie, ob Sie root sind, und starten Sie andernfalls mit sudo neu , zum Beispiel:

#! /bin/bash

if [[ $EUID -ne 0 ]];
then
    exec sudo /bin/bash "$0" "[email protected]"
fi

Linux
  1. Wie man ein Skript ausführt??

  2. Wie kann ich dieses Sed-Skript schneller machen?

  3. So führen Sie ein Shell-Skript beim Start aus

  4. Wie lässt sich ein Python-Skript als Dienst ausführen?

  5. Wie bringe ich sudo dazu, nach dem Root-Passwort zu fragen?

So führen Sie ein Python-Skript in PHP aus

So führen Sie Sudo-Befehle ohne Passwort aus

So führen Sie ein Bash-Skript aus

Wie führe ich Dolphin als Root aus?

So führen Sie einen Alias ​​mit Sudo in Linux aus

So führen Sie sudo-Befehle ohne Passwort aus