GNU/Linux >> Znalost Linux >  >> Linux

Spustit skript s argumenty jako uživatel?

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]"

Linux
  1. Jak spustit skript??

  2. Zkontrolujte, jak dlouho trvá spuštění Bash skriptu s Time Command

  3. Jak automaticky přidat uživatelský účet A heslo pomocí skriptu Bash?

  1. Jak spustit skript jako jiný uživatel bez hesla?

  2. Spusťte skript pomocí rc.local:skript funguje, ale ne při spouštění

  3. Ubuntu - Spusťte příkaz při spuštění pomocí sudo

  1. Shell Script Wrapper zabránit spuštění příkazu bez argumentů?

  2. Jak spustit příkaz jako konkrétní uživatel ve skriptu init?

  3. Spusťte skript prostředí jako jiný uživatel