Como trocar / chagar o id do usuário com um script bash para executar comandos no mesmo script?

10

Existe uma maneira de mudar a identidade do usuário dentro de um script (executado como root como parte de um processo de instalação) para executar alguns comandos sem chamar um script externo, então retornar para root para executar outros comandos?

Mais ou menos:

#!/bin/bash
some commands as root
SWITCH_USER_TO user
some commands as user including environment variables checks, without calling an external script
SWITCH_USER_BACK
some other stuff as root, maybe another user id change...
    
por a1an 30.08.2012 / 11:07

1 resposta

23

Não. Mas você pode usar sudo para executar um shell e usar um heredoc para alimentá-lo.

#!/bin/bash
whoami
sudo -u someuser bash << EOF
echo "In"
whoami
EOF
echo "Out"
whoami
    
por 30.08.2012 / 11:11