我有一个以root权限运行的脚本,我有一个命令,不能使用脚本执行的那些权限运行。我需要一种在没有这些权限的情况下运行该命令的方法。
从我能够确定的,我可以使用像sudo这样的工具作为另一个用户运行命令。但这样做需要知道要事先使用的用户名(或ID)。这也引发了一两个安全问题。
我的问题是:是否可以简单地以root身份运行该命令但没有提升权限?如果没有,是否有合适的替代方案?
答案 0 :(得分:3)
您确实可以使用sudo
以较低的权限运行命令,如下所示:
sudo -u USERNAME COMMAND
或更好
sudo -u USERNAME -g GROUPNAME COMMAND
请注意,这需要sudoers
文件中的正确条目。
如果您不知道用户的名称,并希望仅使用一些降低的权限运行该命令,则可以使用用户nobody
和组nobody
或nogroup
答案 1 :(得分:2)
su <non-root-user> -c 'some_command'
答案 2 :(得分:1)
我的问题是:是否可以简单地以root身份运行该命令 没有提升的特权?
没有。 root帐户的全部内容是它具有完全权限。事实上,任何帐户的重点是它拥有的权限。没有root权限的运行方式是以root用户身份运行。
如果没有,是否有合适的替代方案?
参见其他答案。您必须从某个特定的非root帐户运行该命令,这意味着您必须知道某个其他帐户的名称(或数字UID)。
正如Adam Zalcman所说,nobody
帐户可能适合。或者您可以阅读/etc/passwd
或等效内容来查找有效帐户(尽管以某个随机真实用户身份运行可能会导致问题)。
就此而言,由于您拥有root权限,因此可以(暂时?)创建新帐户以运行命令。但这可能有点过头了。
最简单的解决方案就是找到一种指定非root帐户的方法。