2012-01-14 60 views
2

我有一个以root权限运行的脚本,并且我有一个命令,不能使用脚本执行的那些权限运行。我需要一种方法来运行没有这些权限的命令。在根shell中运行没有权限的命令

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

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

回答

4

你的确可以使用sudo与降低特权像这样运行命令:

sudo -u USERNAME COMMAND 

或更好

sudo -u USERNAME -g GROUPNAME COMMAND 

注意,这将需要在sudoers文件正确的条目。

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

+0

非常感谢。 “没有人”正是我想要的。 – seininn 2012-01-14 14:40:27

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

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

否。根帐户的全部要点是它具有完整的权限。实际上,帐户的任何帐户都是它拥有的权限。没有root权限的情况下运行的方式是作为root用户以外的用户运行。

如果不是,是否有适合的选择?

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

正如Adam Zalcman所说,nobody帐户可能是合适的。或者您可以阅读/etc/passwd或同等效果查找有效的帐户(虽然以某些随机真实用户身份运行可能会导致问题)。

对于这个问题,既然你有root权限,你可以(暂时?)创建一个新账户用于运行该命令。虽然这可能是矫枉过正。

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

+0

感谢您的详细回复,但“没有人”是我一直在寻找的。 – seininn 2012-01-14 14:44:39