为什么我的$ PATHvariables在使用su root时不同于root?

当我试图以普通用户身份(在CentOS 5上)运行chkconfig时,我意识到我无法访问它,因为目录sbin不在$ PATH中。 当我su源,它仍然无法正常工作。 我意识到,$ PATHvariables是相同的,我从普通用户切换。

但是,当以root用户身份login时,$ PATHvariables对于root来说是正确的,我可以运行该命令。

这是应该这样工作吗? 如何让普通用户临时访问只能以root身份运行的命令?

谢谢

尝试使用命令su --意味着新的shell将得到你已经改变的用户的环境。 如果你不使用它,你的大部分环境将保持不变。

苏的手册页说:

可选参数 – 可以用来提供一个类似于用户希望用户直接login的环境。

Root和User有完全不同的离散环境。 使用sudo,可以执行受限制的命令,但实际上保持环境variables不变。

另一方面,让我们说,加载根的环境。 这几乎就像login为根。

关于你的问题,你可以让普通用户能够“看到”命令,但不能执行它们。 你仍然需要root权限。

例如,你可以像普通用户一样运行ifconfig来查看你的ip,但是如果你想改变一些东西,那么你必须拥有正确的权限。

我认为这很正常,每个用户都有自己的PATHvariables,如果需要的话,可以在用户的​​configuration文件中更改它。

关于允许用户执行保留为root的命令,可以使用setuid bit但它可能是危险的( setuid )。 如果用户在setuid位设置的根文件上执行了权限(例如通过组),他将使用所有者的权限(root)而不是他自己的权限来执行该文件。 我不确定它是否适用于所有的发行版本,因为根据文档,很多发行版并不尊重它,但是它至less可以在Ubuntu上运行。