55得票4回答
从一个长时间运行的Python进程中以不同用户身份运行子进程

我有一个长时间运行的、守护进程的 Python 进程,当发生某些事件时,它使用 subprocess 来生成新的子进程。长时间运行的进程是由具有超级用户特权的用户启动的。我需要它生成的子进程以另一个用户(例如"nobody")身份运行,同时为父进程保留超级用户权限。 我目前正在使用su -m...

41得票4回答
真实用户ID、保存的用户ID、有效用户ID。这是怎么回事?

这是一个设置根用户ID的程序$ls -l -rwsr-sr-x 1 root root 7406 2011-12-13 22:37 ./x* 源代码:int main(void) { printf( " UID GID \n" ...

31得票5回答
从setuid root C程序调用脚本-脚本不以root身份运行

我需要以root身份运行一个bash脚本(不能使用无需密码的sudo或su),而在Linux中无法设置脚本的setuid位,因此我考虑从一个可执行文件中调用并使其设置setuid:$ cat wrapper.c int main(void) { system("/bin/bas...

19得票2回答
收到消息“sudo: must be setuid root”,但sudo已经是root拥有的

我尝试运行sudo,但它失败了:gregd@david $ sudo ls sudo: must be setuid root gregd@david $ which sudo /usr/bin/sudo gregd@david $ ll /usr/bin/sudo -rwxr-xr-x 1 ...

17得票1回答
使用$ORIGIN与setuid应用程序一起时不会如预期那样失败

我有一个librandom.so库和一个main可执行文件,编译方式如下:$ clang++ -o main main.o -lrandom -L. -Wl,-rpath,"\$ORIGIN" 它们都在同一个目录中。由于main在其rpath中有$ORIGIN,因此它可以正常工作-./main...

17得票3回答
system()与execve()的区别

在编程中,system()和execve()都可以用来执行另一个命令。但是,在set-UID程序中,为什么system()是危险的而execve()是安全的呢?

16得票4回答
Python脚本的Setuid位:Linux与Solaris的区别

我正在Linux和Solaris上运行这个小的Python脚本,作为非特权用户:#!/usr/bin/python import os print 'uid,euid =',os.getuid(),os.geteuid() 在运行脚本之前,设置了脚本的setuid位(而不是Python解释器)...

15得票5回答
如何在具有超级用户位的进程上运行Valgrind?

我正在按以下方式运行valgrind: /usr/local/bin/valgrind "进程名称" 执行后,它会给我以下错误信息: ==21731== ==21731== Warning: Can't execute setuid/setgid executable: ==21731...

15得票3回答
Linux C编程以用户身份执行

我有一个以root身份运行的程序,我希望该程序能够执行另一个普通用户的应用程序。我尝试使用setgid(),它可以工作,但是我无法切换回root或其他用户。目前这个程序非常简单。 #include <stdio.h> #include <unistd.h> #inc...

14得票3回答
setuid与seteuid函数的区别

setuid和seteuid函数有什么区别?在手册页面上,这两个函数的描述非常相似。 setuid:DESCRIPTION setuid() sets the effective user ID of the calling process. If the effective...