如何以没有人的身份运行程序?
时间:2020-03-05 18:54:30 来源:igfitidea点击:
我希望一个用户特权(不是root)进程以用户" nobody"的身份启动新进程。我已经尝试过直接调用setuid
,但在Ubuntu 8.04
上以-1EPERM
失败:
#include <sys/types.h> #include <unistd.h> int main() { setuid(65534); while (1); return 0; }
我应该怎么做呢?
解决方案
回答
据我所知,除非我们是root用户或者设置sudo来允许我们切换用户,否则我们将无法进行操作。或者,我们可以在可执行文件上设置suid位,并将其归任何人所有。但这也需要root访问。
回答
我们将需要系统管理员的帮助和信任。普通用户不能代表其他用户运行自己选择的可执行文件。
她可以使用适当的设置将应用程序添加到/ etc / sudoers
中,并且我们可以像使用sudo -u nobody
一样运行它。这将同时适用于脚本和二进制可执行文件。
另一个选择是,她将对二进制可执行文件执行" chown none"和" chmod + s"操作,并且我们将能够直接执行它。每次可执行文件更改时,都必须重复执行此任务。
如果我们将创建一个很小的帮助程序可执行文件,而该可执行文件仅执行exec(" / home / you / bin / your-application"),这也可能适用于脚本。该可执行文件可以设置为suid-nobody(参见上文),我们可以自由地修改"应用程序"。
回答
calife是sudo的替代方案。
Calife is small program that enable a UNIX system administrator to become root (or another user) on his/her machines without giving the root password but his/her own.
回答
" nobody"用户仍然是用户。我不确定理由是让程序以没有人的身份运行,这不会增加任何额外的安全性。我们更有可能面对其他问题。
我会遵循squadette推荐的使用帮助程序的建议。