我有一个以root权限运行的脚本,并且我有一个命令,不能使用脚本执行的那些权限运行。我需要一种方法来运行没有这些权限的命令。在根shell中运行没有权限的命令
从我已经能够确定,我可以运行一个命令作为另一个用户使用像sudo这样的工具。但是这样做需要掌握用户名(或ID)的知识。这也引发了一两个安全问题。
我的问题是:是否可以简单地以root身份运行该命令,但没有提升权限?如果没有,是否有适合的选择?
我有一个以root权限运行的脚本,并且我有一个命令,不能使用脚本执行的那些权限运行。我需要一种方法来运行没有这些权限的命令。在根shell中运行没有权限的命令
从我已经能够确定,我可以运行一个命令作为另一个用户使用像sudo这样的工具。但是这样做需要掌握用户名(或ID)的知识。这也引发了一两个安全问题。
我的问题是:是否可以简单地以root身份运行该命令,但没有提升权限?如果没有,是否有适合的选择?
你的确可以使用sudo
与降低特权像这样运行命令:
sudo -u USERNAME COMMAND
或更好
sudo -u USERNAME -g GROUPNAME COMMAND
注意,这将需要在sudoers
文件正确的条目。
如果您不知道用户的名称,并希望仅使用某些降低的权限运行命令,则可以使用用户nobody
和组nobody
或nogroup
。
su <non-root-user> -c 'some_command'
我的问题是:是否可以简单地以root身份运行该命令,但是 没有提升的权限?
否。根帐户的全部要点是它具有完整的权限。实际上,帐户的任何帐户都是它拥有的权限。没有root权限的情况下运行的方式是作为root用户以外的用户运行。
如果不是,是否有适合的选择?
查看其他答案。您必须从某个特定的非根帐户运行命令,这意味着您必须知道某个其他帐户的名称(或数字UID)。
正如Adam Zalcman所说,nobody
帐户可能是合适的。或者您可以阅读/etc/passwd
或同等效果查找有效的帐户(虽然以某些随机真实用户身份运行可能会导致问题)。
对于这个问题,既然你有root权限,你可以(暂时?)创建一个新账户用于运行该命令。虽然这可能是矫枉过正。
最简单的解决方案就是找到一种方法来指定一个非root帐户。
感谢您的详细回复,但“没有人”是我一直在寻找的。 – seininn 2012-01-14 14:44:39
非常感谢。 “没有人”正是我想要的。 – seininn 2012-01-14 14:40:27