Então, isso é algo que não consigo entender. Eu sei como configurar sudo
para manter todos os envs intactos, agora estou confuso sobre o que causa o comportamento diferente no Ubuntu vs. Debian.
Portanto, no Debian, tenho os sudoers configurados com
~# cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Eu defino algumas variáveis em /etc/environment
, re-login e teste:
~# sudo sh -c 'echo $FOO'
O ambiente não está lá, como não deveria (pelo menos AFAIK), pois os sudoers estão configurados para redefinir o env.
Fazendo o mesmo no Ubuntu:
~# cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Nota: Tem o mesmo env_reset
conjunto. Mas:
~# sudo sh -c 'echo $FOO'
bar
Portanto, a pergunta que me deixa perplexo é: por que isso funciona no Ubuntu mesmo quando o env_reset
está definido e nenhuma configuração do meu Ubuntu ou Debian está env_keep
definida?
man 5 sudoers
diz:Portanto, o PAM é importante. Vamos verificar
/etc/pam.d/sudo
os dois sistemas. Esta linha existe no Ubuntu, mas não no Debian:Então é isso que
man 8 pam_env
diz:Parece que
readenv=1
nesta mesma linha é responsável pela análise/etc/environment
quandosudo
é executado. De fato, definir isso como0
(ou comentar toda a linha) fazsudo sh -c 'echo $FOO'
com que meu Ubuntu se comporte como no Debian.