
Há algum tempo, ao brincar com LXC sem privilégios, descobri que o comando para criar um contêiner falhava se eu mudasse su
para o usuário, mas funcionava se eu fizesse ssh user@localhost
login.
Esta não é uma questão relacionada ao LXC, mas me fez pensar qual a melhor forma de trocar de usuário sem deixar referências ou trazer variáveis do antigo?
Obrigado!
Responder1
Uma diferença entre su
e ssh
é que o último na verdade envolve um shell de login, enquanto o primeiro não o faz por padrão - embora crie um novo shell interativo (veja INVOCATION no topo de man bash
para saber o significado deinterativoeConecte-secartuchos). De man su
:
Para compatibilidade com versões anteriores, o su padrão é não alterar o diretório atual e definir apenas as variáveis de ambiente HOME e SHELL (mais USER e LOGNAME se o usuário de destino não for root). Recomenda-se sempreuse a opção --login(em vez do atalho -) para evitar efeitos colaterais causados pela mistura de ambientes.
Então, você pode tentar su --login
ver se isso faz o que você deseja.
Presumo que você esteja usando uma GUI, e é por isso que você simplesmente não sai e faz login novamente. No entanto, issopoderiaseja possível de qualquer maneira (dependendo, acredito, do seu sistema init), simplesmente executando login
a partir de qualquer terminal que você esteja usando. Se funcionar, você deverá ver o login:
prompt normal e, quando terminar, poderá exit
fazê-lo conforme su
.