在root shell中运行没有权限的命令

时间:2012-01-14 10:39:37

标签: bash

我有一个以root权限运行的脚本,我有一个命令,不能使用脚本执行的那些权限运行。我需要一种在没有这些权限的情况下运行该命令的方法。

从我能够确定的,我可以使用像sudo这样的工具作为另一个用户运行命令。但这样做需要知道要事先使用的用户名(或ID)。这也引发了一两个安全问题。

我的问题是:是否可以简单地以root身份运行该命令但没有提升权限?如果没有,是否有合适的替代方案?

3 个答案:

答案 0 :(得分:3)

您确实可以使用sudo以较低的权限运行命令,如下所示:

sudo -u USERNAME COMMAND

或更好

sudo -u USERNAME -g GROUPNAME COMMAND

请注意,这需要sudoers文件中的正确条目。

如果您不知道用户的名称,并希望仅使用一些降低的权限运行该命令,则可以使用用户nobody和组nobodynogroup

答案 1 :(得分:2)

su <non-root-user> -c 'some_command'

答案 2 :(得分:1)

  

我的问题是:是否可以简单地以root身份运行该命令   没有提升的特权?

没有。 root帐户的全部内容是它具有完全权限。事实上,任何帐户的重点是它拥有的权限。没有root权限的运行方式是以root用户身份运行。

  

如果没有,是否有合适的替代方案?

参见其他答案。您必须从某个特定的非root帐户运行该命令,这意味着您必须知道某个其他帐户的名称(或数字UID)。

正如Adam Zalcman所说,nobody帐户可能适合。或者您可以阅读/etc/passwd或等效内容来查找有效帐户(尽管以某个随机真实用户身份运行可能会导致问题)。

就此而言,由于您拥有root权限,因此可以(暂时?)创建新帐户以运行命令。但这可能有点过头了。

最简单的解决方案就是找到一种指定非root帐户的方法。