Bla*_*ers 5 c++ git permissions ubuntu setuid
我有一个git存储库,需要以sudo的形式运行post-receive hook.我编译为测试它的二进制文件如下所示:
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
int main() {
int ret;
ret = setuid(geteuid());
if(!ret) {
fprintf(stderr, "error setting uid %d \n", ret);
}
system("[...command only sudo can access...]");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该geteuid()检索的所有者ID post-receive,然后试图对setuid.当与任何用户(包括超级用户)一起运行时,它以root身份正确运行脚本.但是,当由git hook触发时,系统无法设置uid.我试过运行chmod u+s post-receive 我也尝试了一些其他配置,但我的想法已经用完了.除非git触发它,否则它会在所有情况下都有效?
顺便说一句,平台Ubuntu Server 9.04(2.6.28-15),git1.6.0.4,gcc版本4.3.3(Ubuntu 4.3.3-5ubuntu4)