freddiefujiwra Asked: 2009-05-25 19:49:03 +0800 CST2009-05-25 19:49:03 +0800 CST 2009-05-25 19:49:03 +0800 CST 如何在 sudo 中覆盖 PATH 环境变量? 772 我在/etc/profile. 在普通用户的情况下我没有任何问题,但是当我成为sudo. 即使我成为 root 权限,您会如何覆盖PATH设置的内容?/etc/profilesudo environment-variables root sudo 4 个回答 Voted Best Answer Juliano 2009-05-25T20:15:42+08:002009-05-25T20:15:42+08:00 出于安全原因,Sudo 会重置 PATH 以及许多其他环境变量。/etc/profile 中的设置无关紧要,除非您运行sudo -i. 在 SECURITY NOTES 下的 sudo 手册页提供了有关安全含义的见解,以及在您了解这样做的含义后,您必须在 /etc/sudoers 文件中修改这些限制的选项。 lexu 2009-05-25T20:22:47+08:002009-05-25T20:22:47+08:00 /etc/profile (security ...) 不会更改 root 的路径 你必须单独设置它,(例如在 root 的 ~/.bash_profile 中) fnux 2013-02-27T18:04:04+08:002013-02-27T18:04:04+08:00 更新: 如果您想在使用 sudo 或 sudo -i 时将特定 PATH 添加到“root”帐户的默认 PATH: 使用 Ubuntu 10.04.x LTS: 相应地修改/etc/environment和etc/login.defs文件。 使用 Ubuntu 12.04.x LTS: 相应地修改/etc/environment和/etc/login.defs文件以及/etc/sudoers文件的Defaults secure_path行(使用 visudo)。 如果您使用的是 GUI,并且对文本模式下的 nano 编辑器不满意,请使用以下命令使用 gedit 编辑 /etc/sudoers 文件: sudo EDITOR=gedit visudo 当您保存 /etc/sudoers 文件时,visudo 将检查您修改的语法。 如果一切正常,您将返回终端会话。 如果出现错误,请按字母“e”再次编辑 /etc/sudoers 文件并更正您的修改。 我还没有尝试使用 Ubuntu 12.10,但我猜(并希望)它与 Ubuntu 12.04.x 相同! 干杯。 kenorb 2015-12-25T10:17:40+08:002015-12-25T10:17:40+08:00 如果您的 Linux 发行版启用了安全策略插件,则PATH可以secure_path在您的sudoers文件中覆盖 by,因此您需要对其进行编辑sudo visudo并将其添加到列表中。 如果是这种情况,您可以通过以下方式检查: $ sudo sudo -V | grep PATH Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 或者一次性使用,请尝试: sudo "PATH=$PATH" foo 请参阅:为什么通过 sudo 和 su 运行时 PATH 变量不同?在 Unix SE
出于安全原因,Sudo 会重置 PATH 以及许多其他环境变量。/etc/profile 中的设置无关紧要,除非您运行
sudo -i
.在 SECURITY NOTES 下的 sudo 手册页提供了有关安全含义的见解,以及在您了解这样做的含义后,您必须在 /etc/sudoers 文件中修改这些限制的选项。
/etc/profile (security ...) 不会更改 root 的路径
你必须单独设置它,(例如在 root 的 ~/.bash_profile 中)
更新:
如果您想在使用 sudo 或 sudo -i 时将特定 PATH 添加到“root”帐户的默认 PATH:
使用 Ubuntu 10.04.x LTS:
相应地修改/etc/environment和etc/login.defs文件。
使用 Ubuntu 12.04.x LTS:
相应地修改/etc/environment和/etc/login.defs文件以及/etc/sudoers文件的Defaults secure_path行(使用 visudo)。
如果您使用的是 GUI,并且对文本模式下的 nano 编辑器不满意,请使用以下命令使用 gedit 编辑 /etc/sudoers 文件:
sudo EDITOR=gedit visudo
当您保存 /etc/sudoers 文件时,visudo 将检查您修改的语法。
如果一切正常,您将返回终端会话。
如果出现错误,请按字母“e”再次编辑 /etc/sudoers 文件并更正您的修改。
我还没有尝试使用 Ubuntu 12.10,但我猜(并希望)它与 Ubuntu 12.04.x 相同!
干杯。
如果您的 Linux 发行版启用了安全策略插件,则
PATH
可以secure_path
在您的sudoers
文件中覆盖 by,因此您需要对其进行编辑sudo visudo
并将其添加到列表中。如果是这种情况,您可以通过以下方式检查:
或者一次性使用,请尝试:
请参阅:为什么通过 sudo 和 su 运行时 PATH 变量不同?在 Unix SE