sudo -u ... -i 不保留用户的 PATH

sudo -u ... -i 不保留用户的 PATH

当我以 root 身份运行时,我尝试确定用户的路径,但 sudo 似乎无法正确复制用户的环境,即使使用 -i 标志也是如此。这是某些 sudoers 策略设置吗?

$ sudo bash
# 导出 PATH=$PATH:/dev/null/$RANDOM
# 打印环境路径
在 /usr/local/sbin 中:在 /usr/local/bin 中:在 /usr/sbin 中:在 /usr/bin 中:在 /sbin 中:在 /dev/null/28718
# sudo -u david-ehrmann -i printenv PATH
在 /usr/local/sbin 中:在 /usr/local/bin 中:在 /usr/sbin 中:在 /usr/bin 中:在 /sbin 中:在 /dev/null/28718
#

答案1

man sudoers

特殊情况是,如果指定了 sudo 的 -i 选项(初始登录),则无论 env_reset 的值如何,sudoers 都会初始化环境。DISPLAY、PATH 和 TERM 变量保持不变;HOME、MAIL、SHELL、USER 和 LOGNAME 根据目标用户进行设置。

因此,-i意味着您可以保留您的,$PATH除非用户.bash_profile(或类似的,取决于 shell)$PATH自行更改。

目前尚不清楚的是是否secure_path会覆盖此行为-i。我相信应该会(加上用户登录脚本的更改)。

相关内容