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