Configuração do ambiente não refletida ao trocar de usuário no Ubuntu 22.04

Configuração do ambiente não refletida ao trocar de usuário no Ubuntu 22.04

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 uservocê precisa usar o -i, --loginpara "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 -ie -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/bashpor exemplo:

sudo su - sally --shell /bin/bash

independentemente do shell especificado pela entrada do banco de dados de senha do usuário de destino.

informação relacionada