Tenho dois usuários chamados Alice e Sally em meu sistema Ubuntu 22.04. Alice configurou suas variáveis de ambiente no arquivo .profile e elas estão funcionando corretamente para ela. No entanto, quando Alice muda para o usuário Sally usando o comando sudo -s -u sally, as configurações de ambiente do .profile de Alice não estão sendo refletidas para Sally.
alice@dev7 192 0 % echo $appuser
alice
alice@dev7 193 0 % env | grep appuser
appuser=alice
alice@dev7 194 0 % sudo -s -u sally
sally@dev7 196 0 % echo $appuser
sally@dev7 197 0 %
Verifiquei que o arquivo .profile está presente no diretório inicial de Sally e possui a configuração necessária. Gostaria de entender por que as variáveis de ambiente não estão sendo aplicadas para Sally quando Alice muda para seu usuário usando sudo -s -u sally. Há alguma etapa ou configuração adicional necessária para garantir que as configurações do ambiente sejam transferidas ao trocar de usuário dessa maneira?
Responder1
~/.profile
é originado no login do usuário ... Portanto, sudo -u user
você precisa usar o -i, --login
para "executar o shell especificado pela entrada do banco de dados de senha do usuário de destino como um shell de login", assim:
sudo -i -u sally
Perceber: você não pode especificar as opções -i
e -s
.
Se, no entanto, você quiser preservar a escolha de shell dos usuários atuais, poderá usar sudo su ...
assim:
sudo su - sally --shell "$SHELL"
ou especifique sua escolha de shell, /bin/bash
por exemplo:
sudo su - sally --shell /bin/bash
independentemente do shell especificado pela entrada do banco de dados de senha do usuário de destino.