prossegue a execução do script após o usuário da mudança

0

Eu sou novo no bash script, quero continuar a execução do script depois de alterar o usuário, o script seria algo como abaixo

echo "xauth add" 'xauth list | grep ${DISPLAY:10:2}' >> test.sh

sudo su

./test.sh

script test.sh deve ser executado depois de mudar o usuário, mas depois de "sudo su", o comando ./test.sh não rodará. Podemos tornar isso possível

    
por karra 05.10.2017 / 21:08

3 respostas

1

Você não pode alterar a identidade do usuário no meio de um script e continuar a executar o script como novo usuário.

Você pode, no entanto, executar outro comando ou script como outro usuário usando sudo :

sudo ./test.sh

Se mais de um comando precisar ser executado como o outro usuário, adicione esses comandos ao script test.sh ou, se for apenas mais uma ou duas coisas que precisem ser executadas, use

sudo sh -c './test.sh; other_command'

O controle será devolvido ao script pai (aquele que está chamando sudo ) assim que o sudo esteja sendo executado.

    
por 05.10.2017 / 22:13
0

EDIT: Na verdade, você quer fazer sudo su -l -c ./test.sh (se você precisar de um shell de login) ou sudo ./test.sh .

Veja as páginas man de su e sudo .

    
por 05.10.2017 / 21:20
0

Você pode alterar o script intermediário do usuário, mas isso requer a alimentação da entrada para o shell e não é portável para outros shells (em particular os sabores antigos e eldritch de sh ) e é provavelmente uma má idéia:

$ cat changemidscript
who am i
sudo -i
who am i
$ bash < changemidscript
jhqdoe   tty??    Oct  5 14:21 
root     tty??    Oct  5 14:21 
$ 

No entanto! bash changemidscript ou ./changemidscript não se comportarão da mesma forma que o acima, o que novamente indica que essa é uma má idéia, já que apenas a entrada de alimentação na entrada padrão permitirá que o usuário mude e, em seguida, os comandos subsequentes como esse novo usuário. (Eu mencionei que você provavelmente quer usar uma maneira diferente? Você deveria!)

    
por 05.10.2017 / 23:21