问题标签 [setuid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1078 浏览

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

我有一个 git 存储库,需要将接收后挂钩作为 sudo 运行。我为测试它而编译的二进制文件如下所示:

检索的geteuid()所有者 id post-receive,然后尝试 setuid。使用任何用户(包括超级用户)运行此脚本时,它会以 root 身份正确运行脚本。但是,当被 git 钩子触发时,系统无法设置 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)

0 投票
3 回答
681 浏览

linux - linux id 和 setuid/setgid

有没有一种简单的方法可以查看正在运行的进程的真实、有效和保存的 UID 和 GID?

0 投票
3 回答
815 浏览

linux - linux id no_squash_root

linux 'id' 命令报告该进程所属的 groups=。何时以及如何填写?

我正在编写一个 suid/sgid 程序,似乎这些组永远不会为我的进程填充,也许只是巧合,但是与 nfs 挂载的文件系统有关的权限也不能正常工作(顺便说一句,我玩过 no_root_squash 并没有帮助)

0 投票
2 回答
601 浏览

c - 使用 setuid 降低权限级别的正确方法是什么?

我正在用 C 语言编写一个绑定到端口 < 1024 的程序。我希望它之后以非 root 权限运行。

我知道我需要调用 setuid(),但是用什么参数呢?UID 因系统而异。

0 投票
5 回答
14393 浏览

linux - 如何将 valgrind 运行到具有超级用户位的进程?

我正在运行 valgrind,如下所示:-

/usr/local/bin/valgrind“进程名”

执行后它给我以下错误

我的 valgrind 权限如下:- -r-sr-xr-x /usr/local/bin/valgrind

我的进程权限如下:--r-sr-xr-x "process_name"

平台:Linux VMLINUX3 2.6.9-78.0.22.ELsmp(RHEL)

Valgrind 版本:valgrind-3.5.0

对此的任何帮助将不胜感激

0 投票
5 回答
57331 浏览

python - 以与长时间运行的 Python 进程不同的用户身份运行子进程

我有一个长时间运行的守护进程 Python 进程,当某些事件发生时,它使用子进程生成新的子进程。长时间运行的进程由具有超级用户权限的用户启动。我需要它产生的子进程作为不同的用户(例如“nobody”)运行,同时保留父进程的超级用户权限。

我目前正在使用

但这似乎是重量级的,并且不会很干净地死去。

有没有办法以编程方式完成此操作而不是使用 su?我正在查看 os.set*uid 方法,但 Python std lib 中的文档在该区域非常稀疏。

0 投票
1 回答
392 浏览

python - 未将用户的 Linux 组调度应用于 setuid 进程

在 2.6.28-11 Linux 内核上,我使用 setpriority 来调整不同用户进程接收的 cpu 时间量。用户 1 将获得用户 2 的两倍 CPU 功率。使用 Linux 的 setpriority,我为用户 2 分配了较低的优先级(在 nice 值方面较高)。当我在计算机负载下通过 shell 运行完全相同的程序时,用户 2 的执行时间是用户 1 的两倍。但是,如果我以 root 身份运行程序,然后使用 setuid、seteuid、setgid、setegid 和 setgroups 成为用户 2(计算机再次处于负载状态,用户 1 以相同的方式运行完全相同的程序) ,程序的执行时间完全相同;用户 2 的进程的调度时间不低于用户 1 的进程。我怎样才能解决这个问题?我是否需要为调度程序设置其他任何内容才能意识到该进程现在是不同用户的一部分?

正在运行的程序是用 Python 编写的。

0 投票
2 回答
5858 浏览

git - Git post-receive hook 用于更新由不同用户拥有的本地克隆

我正在尝试设置一个 git post-receive 钩子,这样当收到提交时,机器上的存储库的另一个克隆会被更新(即执行 a git pull origin master)。我正在使用 gitosis 为存储库提供服务,因此我相信一个接收后挂钩将以gitosis用户身份运行,而我想在接收时更新的存储库由www-data. 我该怎么做呢?

我听说过setuid脚本,但我不确定这是否会带来安全风险?如果这不是安全风险,我该怎么做呢?我猜我会做一些事情,比如让脚本拥有www-data并使其成为世界可执行文件并启用 setuid 位?我猜这个脚本几乎是无害的,因为它所做的只是更新存储库,但我想确定一下。谢谢!

编辑:有什么办法可以做到这一点sudo吗?那会比 更安全setuid吗?我的意思是,如果用户不是 root 用户,我认为不会有太大问题setuid,但无论如何,我似乎必须跳过几圈setuid才能运行脚本。

第二次编辑:似乎我可以用一些/etc/sudoers魔法和sudo -u. 也许我应该把它贴在 ServerFault 上,但至少我从这次努力中学到了一些东西。

0 投票
1 回答
2823 浏览

python - 在 Python 中检查文件是否为 setuid root

我正在尝试检查文件是否在 Python 中具有 setuid 位。

stat 文档提到了一个S_ISUID函数,但它仅适用于os.chmod(),而不是实际读取 setuid 位。它还列出了S_IMODE,但我不知道如何解释它。

如何轻松检查文件是否设置为 setuid 根位?

0 投票
4 回答
10043 浏览

c - 如何从 root 使用 setuid() 成为用户,以后有可能再次成为 root?

我正在尝试做安全的事情,并且有一个程序需要以 root 身份运行以在不需要它们时放弃其权限。如果我的二进制文件带有 SUID 位,这很好chmod用,并使其属于 root,因为现在我有 UID = 某个用户和 EUID = root,所以我可以使用seteuid(0)seteuid(getuid())分别提高和删除管理员权限。

但是如果我使用sudo而不是设置SUID,那么UID == EUID == 0,所以调用seteuid(getuid())不会有任何效果。而且我不能只是UID从某个随机用户那里更改为某个值,因为setuid()手册页清楚地指出,如果它是从以 root 身份运行的程序调用的,则将永远失去特权,并且没有希望找回它们。

那么,如何让我的程序在运行时暂时失去特权sudo