GNU/Linux >> Znalost Linux >  >> Linux

Jak zpětně zajistit, aby skript běžel jako root?

Píšu skript Shell, který musí být spuštěn s právy root.

Mohu zkontrolovat, zda má uživatel práva root pomocí sudo -nv || echo "no sudo" , ale to mi nepomůže, pokud jsou jeho přihlašovací údaje stále uloženy v mezipaměti pomocí sudo , ale nezavolal tím můj scénář. Takže nemám žádný způsob, jak reagovat na uživatele, nezavolat svůj skript pomocí sudo.

Mohl bych vložit sudo před každým příkazem, který to potřebuje, takže by stačilo zkontrolovat, zda má uživatel práva root, ale zdá se mi, že by mělo existovat lepší řešení.

Hledám příkaz, který mohu vložit do svého skriptu, který požádá uživatele o oprávnění root, a pokud je poskytnut, provede zbytek skriptu, jako by jej uživatel nejprve zavolal s právy root.

Co chci:

#!/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

Upraveno 2krát

Přijatá odpověď:

Otestujte, zda jste root, a pokud ne, restartujte pomocí sudo , například:

#! /bin/bash

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

Linux
  1. Jak spustit „find -exec {};?

  2. Jak zajistit, aby skript Python běžel jako služba nebo démon v Linuxu

  3. Jak přinutím sudo, aby požádal o heslo uživatele root?

  1. Jak spustit konkrétní program jako root bez výzvy k zadání hesla?

  2. Jak fungují vnitřnosti sudo?

  3. Spusťte ifconfig bez sudo

  1. Jak spustit příkaz, který zahrnuje přesměrování nebo potrubí pomocí Sudo?

  2. Jak zajistit, aby skript Shell vždy běžel jako root?

  3. Jak spustit terminál jako root?