-SUID-无法以root身份运行“-rwsr-xr-x”文件

时间:2017-03-09 15:12:30

标签: c ubuntu permissions suid

我使用的是Ubuntu 16.10。

我跟着一本书,做了这样的事情:

#include <stdio.h>

int main() {
    printf("Real UID:\t%d\n", getuid());
    printf("Effective UID:\t%d\n", geteuid());
}

要在不使用sudo命令的情况下将此文件作为sudo运行,在使用gcc编译后,我将所有者和组更改为root。

$ gcc -o test test.c
$ sudo chown root:root ./test
$ chmod u+s ./test
$ ls -l
-rwsr-xr-x 1 root root 8512 Mar 9 test

现在,这是我执行文件时得到的。我的UID是1000。

$ ./test
Real UID:        1000
Effective UID:   1000

我读的那本书说结果应该是这样的:

$ ./test
Real UID:        1000
Effective UID:   0

root的UID是0,对吗?这是否意味着我使用自己的用户权限运行root拥有的 -rwsr-xr-x 文件?我不明白。

1 个答案:

答案 0 :(得分:1)

你的书有点旧吗?看起来现代* nix变体广泛忽略了可执行文件上的粘滞位:

  

[...] Linux内核忽略了文件的粘性位。 [...]当在目录上设置粘滞位时,该目录中的文件只能由root或目录所有者或文件所有者取消链接或重命名。[4]

https://en.wikipedia.org/wiki/Sticky_bit