Se você não quiser especificar a senha toda vez, adicione sesu
ao sudoers
group e execute o comando que você deseja desta forma:
sudo su -c "command string"
Desta forma, command string
é executado como superusuário (root, etc).
Eu tenho um script de shell no qual a maioria dos comandos precisa ser executada em sesu
user e, em seguida, preciso executar alguns comandos como usuário atual. Você pode por favor me ajudar nisso?
Se você não quiser especificar a senha toda vez, adicione sesu
ao sudoers
group e execute o comando que você deseja desta forma:
sudo su -c "command string"
Desta forma, command string
é executado como superusuário (root, etc).
O comando
exit
fecha o shell atual. Se você estava executando um shell como o usuário X , então mudou para um usuário Y , sair fecha o shell no qual você estava Y e você volta a ser X
Eu tenho estado em uma situação semelhante recentemente. Aqui está o que eu fiz para ir para o nível de superusuário imediatamente quando um script é chamado e, subseqüentemente, executar tarefas de usuário regular. Acho que isso pode ajudar você a descobrir uma maneira de chegar à solução desejada:
#!/bin/bash
# generic_sudo.sh
# Tool that demonstrates in-then-out of sudo
# This demo is pointless if called with 'sudo generic_sudo.sh'
# Need root priviledges for some superuser work
if (( EUID != 0 )); then # If the user is not "root":
# In general one should use ((..)) for testing numbers and integer variables, and [[..]] for testing strings and files.
sudo $0 # Relaunch it as "root".
EXITCODE=$?
printf "su mode OFF.\n" # If we got here, we left superuser mode
printf "EUID is: %d\n" $EUID
printf "Exit code %d\n" $EXITCODE
exit $EXITCODE # Once it finishes, exit gracefully.
else
printf "su mode ON.\n"
fi # End if.
printf "EUID is: %d\n" $EUID
# Some superuser work
printf "Some superuser work was done.\n"
exit 0