De acordo com o sudo manual:
By default, sudo does not modify HOME
Isso significa que, quando você executar sudo -u <dummy user> <command>
, o HOME não será alterado e apontará para o diretório inicial do usuário chamado. Mais precisamente, todo o ambiente permanece inalterado, e o comando é executado, portanto, no ambiente do usuário que invocou sudo
. Apenas uid
é alterado e quando o comando tenta escrever em $HOME
, ele não tem permissão correta.
Para executar o comando como <dummy user>
sem solicitar a senha e ter o ambiente correto, você deve criar um arquivo simples:
sudo visudo -f /etc/sudoers.d/myOverrides
com esta diretiva:
<user> ALL= NOPASSWD:/bin/su
Isso permite que <user>
execute o comando su
como root sem solicitar a senha ( <user>
password) e executando su
como root doesn ' Não é necessário digitar a senha do usuário alvo ( <dummy user>
neste caso).
sudo su - <dummy user> -c /path/to/chromium-browser
Outra abordagem melhor, altere /etc/sudoers.d/myOverrides
com:
<user> ALL= (<dummy user>) NOPASSWD:/path/to/chromium-browser
isso permite que <user>
execute /path/to/chromium-browser
como <dummy user>
sem solicitar a senha.
sudo -u <dummy user> -i /path/to/chromium-browser
onde opção -i, de acordo com o manual do sudo :
A opção -i (simular login inicial) executa o shell especificado no passwd (5) entrada do usuário alvo como um shell de login. Isso significa que Arquivos de recursos específicos de login, como .profile ou .login, serão lidos pela casca. Se um comando é especificado, ele é passado para o shell para execução. Caso contrário, um shell interativo é executado. sudo tenta mudar para o diretório inicial desse usuário antes de executar o Concha. Ele também inicializa o ambiente, deixando DISPLAY e TERM inalterado, definindo HOME, SHELL, USER, LOGNAME e PATH, bem como o conteúdo de / etc / environment nos sistemas Linux e AIX. Todos os outros variáveis de ambiente são removidas.