centos 6.4,sudo -u -H不起作用

时间:2017-01-12 11:46:48

标签: sudo centos6

我在使用sudo的一些命令时遇到了问题。

我在Centos 6.4上尝试了以下命令并出错。

sudo -u someuser -H bundle install
sudo: bundle: command not found

然而,当我在Ubuntu 14.04上尝试相同的命令时,它运行正常。

不仅bundle而且许多命令都会出现相同的错误。例如ruby, node。但是有些命令工作正常。例如echo, mkdir, touch ...

任何人都有一些想法?

1 个答案:

答案 0 :(得分:0)

secure_path中的

/etc/sudoers确保在sudo下运行二进制文件时路径是干净的。 在CentOS中你应该有像

这样的东西
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

这解释了为什么找到一些命令(echo,mkdir,touch ...)。

您可以保留环境变量($ PATH) 以这种形式

sudo -u someuser "PATH=$PATH" bundle install

来自man sudo

  

也可以传递要为命令设置的环境变量   VAR = value形式的命令行,例如   LD_LIBRARY_PATH =在/ usr /本地/包装/ lib中。传递给命令的变量   线条也是一样的        作为正常环境变量的限制有一个重要的例外。如果在sudoers中设置了setenv选项,则命令为   运行具有SETENV标记集或匹配的命令是ALL,用户可以   设置变量        否则将被禁止。有关更多信息,请参阅sudoers(5)。

根据您系统的安全政策,您可以使用-E代替上述方法。

  

-E -E(保留环境)选项向安全策略指示用户希望保留其现有的安全策略   环境变量。如果安全策略可能会返回错误   指定了-E选项,用户无权保留环境。