我在我的主目录中安装了 eclipse,并将其路径PATH
放在~/.profile
.
所以它的工作原理
$ eclipse
Run Code Online (Sandbox Code Playgroud)
但是当用 调用它时sudo
,eclipse
没有找到:
$ sudo eclipse
sudo: eclipse: command not found
Run Code Online (Sandbox Code Playgroud)
这PATH
不sudo eclipse
用于搜索eclipse
?是用户root
的PATH
吗?
谢谢。
sudo
默认情况下使用最小的 PATH
, 以使其安全供root用户使用。这不一定与以root用户PATH
身份登录或执行以下操作所获得的相同
sudo su -
Run Code Online (Sandbox Code Playgroud)
例如,在较新的 Red Hat 版本中,我注意到路径省略了/usr/local/bin
.
手册页在标题为“安全说明”的部分中对此进行了总结:
sudo 在执行外部命令时尽量保证安全。
有两种不同的方式来处理环境变量。默认情况下,
env_reset
sudoers 选项处于启用状态。这导致命令与一个含有最小的环境中执行TERM
,PATH
,HOME
,SHELL
,LOGNAME
,USER
和USERNAME
除了从调用过程变量允许通过env_check
和env_keep
sudoers的选项。环境变量有一个有效的白名单。
进一步阅读:
secure_path
用于从 sudo 运行的每个命令的路径。如果你不相信运行 sudo 的人有一个健全的 PATH 环境变量,你可能想要使用它。另一个用途是如果您想让“根路径”与“用户路径”分开。exempt_group
选项指定的组中的用户不受secure_path
. 默认情况下未设置此选项。
归档时间: |
|
查看次数: |
580 次 |
最近记录: |