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.