小编PHP*_*ner的帖子

为什么 setuid 对可执行文件不起作用?

我知道在脚本上启用 setuid 存在安全问题,因此默认情况下处于非活动状态,但希望它适用于可执行文件。我创建了一个可执行文件,它按照这篇文章中描述的说明显示 uid 作为输出:Allow setuid on shell scripts

但它在运行之前和之后返回相同的 uid (1000) sudo chmod +s ./setuid-test。我认为这意味着 setuid 对我的可执行文件没有任何影响,为什么以及如何解决?

源代码:

#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
    printf("%d", geteuid());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

构建和运行

$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
Run Code Online (Sandbox Code Playgroud)

运行时ls -la,这就是我得到的:

me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
Run Code Online (Sandbox Code Playgroud)

setuid permissions executable

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

executable ×1

permissions ×1

setuid ×1