相关疑难解决方法(0)

允许在 shell 脚本上使用 setuid

setuid权限位告诉Linux与业主,而不是执行者的有效用户ID运行程序:

> cat setuid-test.c

#include <stdio.h>
#include <unistd.h>

int main(int argc, char** argv) {
    printf("%d", geteuid());
    return 0;
}

> gcc -o setuid-test setuid-test.c
> ./setuid-test

1000

> sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
> ./setuid-test

65534
Run Code Online (Sandbox Code Playgroud)

但是,这仅适用于可执行文件;shell 脚本忽略 setuid 位:

> cat setuid-test2

#!/bin/bash
id -u

> ./setuid-test2

1000

> sudo chown nobody ./setuid-test2; sudo chmod +s ./setuid-test2
> ./setuid-test2

1000
Run Code Online (Sandbox Code Playgroud)

维基百科

由于安全漏洞的可能性增加,许多操作系统在应用于可执行 shell 脚本时会忽略 setuid 属性。

假设我愿意接受这些风险,有没有办法告诉 Linux 将 shell 脚本上的 setuid …

shell security scripting setuid

223
推荐指数
7
解决办法
18万
查看次数

如何用文件系统功能替换 setuid

这个问题的启发,下面是后续内容:

你们中的一些人可能知道 setuid-binaries 是危险的,因为一些漏洞利用这些来将他们的权限升级到 root。

现在似乎有一个有趣的想法用不同的、更安全的方法来替换 setuid。

如何?

linux security setuid capabilities

5
推荐指数
1
解决办法
3323
查看次数

标签 统计

security ×2

setuid ×2

capabilities ×1

linux ×1

scripting ×1

shell ×1