如何以无人的方式运行程序?

jld*_*ger 10 c linux security ubuntu

我希望用户特权(非root)进程以用户身份启动新进程nobody.我已经尝试过直接调用,setuid但是在-1 EPERM上失败Ubuntu 8.04:

#include <sys/types.h>
#include <unistd.h>

int main() { 
       setuid(65534);
       while (1);
       return 0;
}
Run Code Online (Sandbox Code Playgroud)

我应该怎么做呢?

squ*_*tte 17

需要援助,并从系统管理员有很多的信任.普通用户无法代表其他用户运行他们选择的可执行文件.

她可以/etc/sudoers使用适当的设置添加您的应用程序,您将能够像以前一样运行它sudo -u nobody.这适用于脚本和二进制可执行文件.

另一种选择是,她会做chown nobodychmod +s你的二进制可执行文件,你就可以直接执行它.每次可执行文件更改时都必须重复此任务.

如果您创建一个简单的辅助程序可执行文件,这也适用于脚本exec("/home/you/bin/your-application").这个可执行文件可以成为suid-nobody(见上文),你可以自由修改your-application.