Eu tenho um script de shell no qual a maioria dos comandos precisa ser executada no 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 conectado no momento?
Se eu estivesse executando tudo isso na linha de comando, eu poderia fazer algo como:
sudo su
[su commands]
exit
[user commands]
No entanto, exit
interromperá o script nesse comando.
su $USER
após os comandos root e antes que eles sejam executados como o usuário atual; Tenho certeza de que todo bash que não foi transformado em conjuntos completos de perversidade $USER
, deve poder servir como um método genérico de produzir um shell com as permissões do usuário conectado.
sudo su
deve abrir um shell raiz para você e o script não deve avançar até que você o deixe. Em seguida [su commands]
, será executado (com sua conta de usuário) e, finalmente, exit
encerrará o script. Considere adicionar whoami
em várias posições ao script para ver quem é o usuário ativo em diferentes pontos do script.
su -
em vez de sudo su
? Isso deve solicitar a senha root e, em seguida, produzir um shell elevado, mas não tenho certeza de como o seguinte exit
se comportará em um contexto de script de shell - é por isso que geralmente é preferível usar Perl ou Python para esse tipo de tarefa; eles podem parecer apresentar uma barreira maior à entrada, mas seu comportamento muito mais previsível e menos vergonhoso mais do que retribui o esforço de ganhar familiaridade.
sudo
os comandos que precisam ser executados como root?sudo
O mecanismo de cache de credenciais embutido significa que você só precisa responder a um prompt de senha uma vez, a menos que o script do shell seja executado por um período muito longo.