【发布时间】:2014-10-09 03:15:46
【问题描述】:
我有一个非常简单的程序:
#define _GNU_SOURCE
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
void error(char *msg) {
printf(msg);
exit(-1);
}
int main(int argc, char **argv) {
uid_t ruid, euid, suid;
if (getresuid(&ruid, &euid, &suid) < 0)
error("Error getting process uids");
printf("%d %d %d\n", ruid, euid, suid);
}
编译如下:
gcc -o print print.c
它归root所有,并设置了setuid位:
-rwsrwxr-x 1 root root 8648 Oct 8 20:10 ./print*
但是,当我运行它时,我获得了以下权限:
1000 1000 1000
所以真正的、有效的和保存的 set-uid 权限都是我 (1000) 而不是 root。 有没有人遇到过这个?有什么建议吗?
【问题讨论】:
标签: setuid