gpt4 book ai didi

c++ - 使用 setuid 运行 git 'post-receive' hook 失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:20 25 4
gpt4 key购买 nike

我有一个 git 存储库,需要以 sudo 运行一个接收后 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;
}

geteuid() 检索post-receive 的所有者id,然后尝试setuid。当与任何用户(包括 super 用户)一起运行时,它会以 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)

最佳答案

  1. 存储 git repo 的文件系统可以使用 nosuid 选项挂载
  2. 如果您通过 ssh 推送,则可能会为使用 ssh 调用的命令禁用 suid 功能(无 CAP_SETUID)

无论如何,您尝试做的事情是非常不可取的。

关于c++ - 使用 setuid 运行 git 'post-receive' hook 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1366090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com