我有一个长时间运行的、守护进程的 Python 进程,当发生某些事件时,它使用 subprocess 来生成新的子进程。长时间运行的进程是由具有超级用户特权的用户启动的。我需要它生成的子进程以另一个用户(例如"nobody")身份运行,同时为父进程保留超级用户权限。 我目前正在使用su -m...
这是一个设置根用户ID的程序$ls -l -rwsr-sr-x 1 root root 7406 2011-12-13 22:37 ./x* 源代码:int main(void) { printf( " UID GID \n" ...
我需要以root身份运行一个bash脚本(不能使用无需密码的sudo或su),而在Linux中无法设置脚本的setuid位,因此我考虑从一个可执行文件中调用并使其设置setuid:$ cat wrapper.c int main(void) { system("/bin/bas...
我尝试运行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 ...
我有一个librandom.so库和一个main可执行文件,编译方式如下:$ clang++ -o main main.o -lrandom -L. -Wl,-rpath,"\$ORIGIN" 它们都在同一个目录中。由于main在其rpath中有$ORIGIN,因此它可以正常工作-./main...
在编程中,system()和execve()都可以用来执行另一个命令。但是,在set-UID程序中,为什么system()是危险的而execve()是安全的呢?
我正在Linux和Solaris上运行这个小的Python脚本,作为非特权用户:#!/usr/bin/python import os print 'uid,euid =',os.getuid(),os.geteuid() 在运行脚本之前,设置了脚本的setuid位(而不是Python解释器)...
我正在按以下方式运行valgrind: /usr/local/bin/valgrind "进程名称" 执行后,它会给我以下错误信息: ==21731== ==21731== Warning: Can't execute setuid/setgid executable: ==21731...
我有一个以root身份运行的程序,我希望该程序能够执行另一个普通用户的应用程序。我尝试使用setgid(),它可以工作,但是我无法切换回root或其他用户。目前这个程序非常简单。 #include <stdio.h> #include <unistd.h> #inc...
setuid和seteuid函数有什么区别?在手册页面上,这两个函数的描述非常相似。 setuid:DESCRIPTION setuid() sets the effective user ID of the calling process. If the effective...