sudo
A partir da página de manual relevante:
The real and effective uid and gid are set to match those of the target user as specified in the passwd file.
Além disso, na descrição da opção -P (preservar vetor de grupo) para sudo:
The real and effective group IDs, however, are still set to match the target user.
Basicamente, quaisquer comandos executados usando sudo serão executados com os IDs de usuário e grupo efetivos do usuário de destino.
Para responder à pergunta, “Existe uma maneira mais segura de fazer isso? , ao executar o sudo como um usuário não privilegiado, prefiro usar a opção -H (HOME) para < em> “defina a variável de ambiente HOME para o homedir do usuário de destino” . Em algum momento no passado, fui surpreendido por algum comportamento inesperado (não lembro dos detalhes) que consegui evitar, adicionando a opção -H aos scripts de shell que usavam o sudo.
Você provavelmente também deve verificar se as opções secure_path e env_reset estão definidas corretamente em /etc/sudoers . A execução de sudo -V mostra quais variáveis de ambiente serão passadas para os comandos lançados pelo sudo e quais não serão juntamente com outras informações interessantes / úteis.
su
Como alternativa, você pode usar su $(id -un 1000) -c 'dbus-launch chromium' para executar o Chromium com o ID do usuário e com o ID do usuário # 1000.
Se você usar su para realizar a mesma tarefa, saiba que (por
padrão) su define apenas as variáveis de ambiente HOME e SHELL para aquelas de
o usuário alvo. Nesse caso (onde o usuário de destino é não privilegiado, ou seja, não
um superusuário) os USER e LOGNAME também são definidos para os do usuário de destino.
As variáveis de ambiente restantes (como PATH ) são preservadas.
Para evitar o vazamento de dados do ambiente para os processos não privilegiados que estão sendo executados,
su deve ser executado com a opção --login ou -l para um shell de login, por exemplo,
su $(id -un 1000) -lc 'dbus-launch chromium'
O --login desabilita todas as variáveis de ambiente, exceto TERM , e redefine
HOME , SHELL , USER e LOGNAME conforme listado acima. Além disso, o PATH é
definido para um valor padrão pré-compilado e o diretório de trabalho atual é definido como
o diretório inicial do usuário alvo antes de executar o script de login do usuário alvo.
Eu geralmente prefiro sudo sobre su por causa de sua capacidade de registro e sua "Sistema de bilhética", que elimina a necessidade de redigitar sua senha dentro de 5 minutos do sudo anteriormente bem sucedido.