Snažím se ujistit, že když je skript spuštěn, je spuštěn jako konkrétní uživatel, aniž bych musel tomuto uživateli před spuštěním skriptu su. Skript se také spouští s několika příznaky, například
./myscript.sh -e dev -v 1.9
Zkoušel jsem následující
[ `whoami` = myuser ] || exec sudo -S su - myuser -c "bash `pwd`/`basename $0` [email protected]"
Ale parametr -v, který má být vstupem do mého skriptu, je přiváděn jako vstup do su. Stěžuje si tedy na neplatnou možnost, existuje způsob, jak výše uvedené napravit?
Poznámka:Osoba spouštějící skript má oprávnění sudo.
Přijatá odpověď:
Aktuální uživatel je již v proměnné $USER
. Takže vše, co potřebujete, je:
[ "$USER" = "myuser" ] || sudo -u myuser $0 "[email protected]"
Není potřeba sudo su
, sudo
dokáže vše, co potřebujete. Nepotřebujete ani pwd
nebo basename
, $0
proměnná již má úplnou cestu ke skriptu.
Váš původní příkaz spouštěl přihlašovací shell (su -
). Pokud je to opravdu potřeba (což se zdá divné), můžete to udělat:
[ "$USER" = "myuser" ] || sudo -iu myuser $0 "[email protected]"