我希望用户特权(非root)进程以用户身份启动新进程nobody
.我已经尝试过直接调用,setuid
但是在-1 EPERM
上失败Ubuntu 8.04
:
#include#include int main() { setuid(65534); while (1); return 0; }
我应该怎么做呢?
你将需要援助,并从系统管理员有很多的信任.普通用户无法代表其他用户运行他们选择的可执行文件.
她可以/etc/sudoers
使用适当的设置添加您的应用程序,您将能够像以前一样运行它sudo -u nobody
.这适用于脚本和二进制可执行文件.
另一种选择是,她会做chown nobody
和chmod +s
你的二进制可执行文件,你就可以直接执行它.每次可执行文件更改时都必须重复此任务.
如果您创建一个简单的辅助程序可执行文件,这也适用于脚本exec("/home/you/bin/your-application")
.这个可执行文件可以成为suid-nobody(见上文),你可以自由修改your-application
.