Articles of setuid

带有setuid /function的stdbuf

我正在从另一个生成输出的进程(慢和无限)读取输出。 因为我想实时读取这些数据,我使用“stdbuf -oL”(行缓冲,数据是文本)。 我没有控制生成过程,所以我不能修改源来强制刷新。 到目前为止,stdbuf工作得很好,但是该进程使用SOCK_RAW,并且需要以root身份运行,具有setuid(0)或cap_net_rawfunction。 以非root用户身份运行setuid或functionstdbuf似乎被忽略。 让我来certificate这个问题: 这是一个简单的作家: #include <stdio.h> #include <unistd.h> int main(){ int i; for ( i = 0;; i++){ fprintf(stdout, "%d\n", i); sleep(1); } } 还有一个简单的读者: #include <stdio.h> int main(){ char* line = NULL; size_t n = 0; while (getline(&line, &n, stdin) != -1 ) { fputs(line, stdout); } } 正如所料,通过执行./writer | […]

setgid()失败 – 不允许操作

我用C创build了一个setuid程序。可执行文件如下所示: -rsrs— 1 root users 13073 Jun 15 21:56 server 我以userA/users执行程序,并尝试将uid / gid设置为userB/otherUsers 。 setgid()失败,操作不允许。 userA不是其他userA的一部分我如何更改有效的gid? [编辑]这是我做了什么的一个小小的总结。 我的C程序,以userA身份执行,将uid和gid设置为userB并创build一个文件。 不如预期,该文件属于组根,因为setgid()失败。 [userA@node uid]$ id uid=11945(userA) gid=544(users) groups=544(users) [userA@node uid]$ id userB uid=11946(userB) gid=10792(otherUsers) groups=10792(otherUsers) [userA@node uid]$ cat uid.c #include <stdio.h> #include <unistd.h> int main() { setuid(11946); setgid(10792); FILE *f = fopen("userB_file", "w"); fclose(f); return 0; } [userA@node […]

获取消息“sudo:必须是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 root root 165K 2012-05-16 00:25 /usr/bin/sudo* 对于如何解决这个问题,有任何的build议吗?

RealUID,保存的UID,有效的UID。 这是怎么回事?

这是一个set-root-uid程序 $ls -l -rwsr-sr-x 1 root root 7406 2011-12-13 22:37 ./x* 源代码: int main(void) { printf( " UID GID \n" "Real %d Real %d \n" "Effective %d Effective %d \n", getuid (), getgid (), geteuid(), getegid() ); seteuid(600); printf( " UID GID \n" "Real %d Real %d \n" "Effective %d Effective %d \n", getuid (), […]

LD_PRELOAD与setuid二进制

我正在尝试使用LD_PRELOAD预载一个具有setuid权限的应用程序库。 起初尝试了LD_PRELOAD ,它好像被setuid二进制忽略了,虽然它在工作,当我试图与其他像ls , dir等 从LD_PRELOAD的文档: LD_PRELOAD A whitespace-separated list of additional, user-specified, ELF shared libraries to be loaded before all others. This can be used to selectively override functions in other shared libraries. For set- user-ID/set-group-ID ELF binaries, only libraries in the standard search directories that are also set-user-ID will be loaded. 我试图把库放在/usr/lib , […]

在Python脚本上的Setuid位:Linux与Solaris

我在Linux和Solaris 上以非特权用户的身份运行这个小python脚本: #!/usr/bin/python import os print 'uid,euid =',os.getuid(),os.geteuid() 在运行之前,setuid位在脚本上设置(不在python解释器上): chown root:myusergrp getuid.py chmod 4750 getuid.py 在Solaris上,由于setuid位,所以设置了有效的uid: uid,euid = 10002 0 但不是在Linux上: uid,euid = 10002 10002 请注意,Solaris和Linux的python版本是2.6 让Python Linux能够像Python Solaris一样工作吗?