Sair do sudo no meio de um script de shell

3

Eu tenho um script de shell no qual a maioria dos comandos precisa ser executada sob o sudo; no entanto, os últimos comandos precisam ser executados como o usuário atual. Existe uma maneira de sair do sudo e mudar para o usuário atualmente logado?

Se eu estivesse executando tudo a partir da linha de comando, poderia fazer algo como:

sudo su
[su commands]
exit
[user commands]

No entanto, exit parará o script nesse comando.

    
por TomJ 30.09.2013 / 18:15

2 respostas

3

Você já pensou em modificar o script para prefixar sudo aos comandos que precisam ser executados como root? O mecanismo de cache de credenciais interno do sudo significará que você só precisará responder uma solicitação de senha uma vez, a menos que o script de shell seja executado por um tempo muito longo.

    
por 30.09.2013 / 18:50
1

Não use sudo su ou su - <user> , porque você abre um subshell com este comando. Isso não vai funcionar muito bem.

Por favor, use sudo "su commands" por exemplo sudo "ls /home"

se você realmente quiser usar sudo su , pode usá-lo digitando, por exemplo

sudo su -c "ls /tmp"

se você tiver mais de um comando, separe-o por ; em% sudo su -c "ls /tmp/; whoami"

    
por 05.10.2013 / 15:58