![sudo -u ... -i 不保留用户的 PATH](https://linux22.com/image/618180/sudo%20-u%20...%20-i%20%E4%B8%8D%E4%BF%9D%E7%95%99%E7%94%A8%E6%88%B7%E7%9A%84%20PATH.png)
当我以 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
。我相信应该会(加上用户登录脚本的更改)。