我在 中设置了 PATH /etc/profile
。在一般用户的情况下没有任何问题,但是在 中成为 root 权限后 PATH 就不行了sudo
。
即使我成为 的 root 权限,您该怎么做才能覆盖PATH
设置的?/etc/profile
sudo
答案1
出于安全原因,Sudo 会重置 PATH 以及许多其他环境变量。除非您运行 ,否则 /etc/profile 中的设置无关紧要sudo -i
。
sudo 手册页中的“安全说明”部分提供了有关安全隐患的见解,以及在您了解这样做的含义后,必须在 /etc/sudoers 文件中修改这些限制的选项。
答案2
/etc/profile 不会改变 root 的路径(安全...)
您必须单独进行设置,(例如在 root 的 ~/.bash_profile 中)
答案3
更新:
如果您想在使用 sudo 或 sudo -i 时将特定 PATH 添加到“root”帐户的默认 PATH:
使用 Ubuntu 10.04.x LTS:
相应地修改/etc/环境和etc/login.defs文件。
使用 Ubuntu 12.04.x LTS:
相应地修改/etc/环境和/etc/login.defs文件也线默认 secure_path的/etc/sudoers文件(使用 visudo)。
如果您使用的是 GUI,并且不习惯在文本模式下使用 nano 编辑器,请使用以下命令通过 gedit 编辑 /etc/sudoers 文件:
sudo EDITOR=gedit visudo
当您保存 /etc/sudoers 文件时,visudo 将检查您修改的语法。
如果一切正常,您将返回到终端会话。
如果有错误,请按字母“e”再次编辑/etc/sudoers文件,并更正您的修改。
我还没有尝试过 Ubuntu 12.10,但我猜测(并且希望)它与 Ubuntu 12.04.x 是一样的!
干杯。
答案4
如果您的 Linux 发行版启用了安全策略插件,则可以在您的文件中PATH
覆盖它,因此您需要通过编辑它并将其添加到列表中。secure_path
sudoers
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