Injetando sudo su com aliases

Injetando sudo su com aliases

Estou me perguntando se existe uma maneira de injetar um alias quando você muda para o perfil root com o sudo.

O que tenho em mente é o seguinte:

sshLogin@linuxVM /home/sshLoginUser/> sudo su -x "alias goHome='cd /home/sshLoginUser/'"
root@linuxVM /home/OtherDir/> goHome
root@linuxVM /home/sshLoginUser/>

Estou usando uma caixa VM na nuvem para configurar e executar algumas operações e, eventualmente, quero adicionar mais alias para tarefas repetitivas.

Idealmente, eu gostaria de sudo sucriar sourceum arquivo que contenha minha coleção de aliases e funções.

Responder1

É importante entender que isso sudonão faz expansão do shell; ele executa um comando. Provavelmente existem duas soluções para o que você gostaria de fazer, cada uma com suas próprias vantagens/desvantagens:

1 alias hop='sudo id': faça sudoparte do alias ou

2 sudo -s(sem comando), que inicia um shell interativo e lê arquivos /root/.bashrc.

Responder2

[tom@alarm ~]$ sudo -i
[root@alarm ~]# tail -n 1 .bashrc
alias goHome="cd /home/$SUDO_USER"
[root@alarm ~]# goHome
[root@alarm tom]# pwd
/home/tom
[root@alarm tom]#

Se os env vars "integrados" não forem suficientes para seus casos, você também pode fazer com que o sudo preserve alguns personalizados. Por exemplo:

CERTAINFILE="/home/$USER/different_name" sudo -i --preserve-env=CERTAINFILE

informação relacionada