【问题标题】:-SUID- Can't run a "-rwsr-xr-x" file as root-SUID- 无法以 root 身份运行“-rwsr-xr-x”文件
【发布时间】:2017-07-30 15:31:51
【问题描述】:

我使用的是 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,对吧?这是否意味着我正在运行一个 -rwsr-xr-x 文件,该文件由 root 拥有,具有我自己的用户权限?我不明白。

【问题讨论】:

  • 我想知道这个问题是否更适合Ubuntu SE site
  • @FredLarson 你是对的......

标签: c ubuntu permissions suid


【解决方案1】:

你的书是不是有点老?似乎现代 *nix 变体广泛忽略了可执行文件上的粘性位:

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

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

【讨论】:

  • 我不确定 2008 年的书是否已经过时,但我发现现在的情况与写书时的情况不同。这本书是“黑客:探索的艺术,第 2 版”,作者 Jon Erickson,2008 年。
  • 是的,我认为从那以后它发生了一些变化:) 如果我的回答对你有帮助,你能考虑接受吗?
猜你喜欢
  • 1970-01-01
  • 2016-01-25
  • 2011-10-03
  • 2011-03-26
  • 1970-01-01
  • 2020-02-19
  • 2021-05-03
  • 2014-07-16
  • 1970-01-01
相关资源
最近更新 更多