【问题标题】:How does Set-user-id bit work on Linux?Set-user-id 位在 Linux 上如何工作?
【发布时间】:2012-11-18 01:34:55
【问题描述】:

我有以下“根文件”,内容如下:

$ cat root-file 
#!/bin/bash   
echo $EUID
id

以下是该文件的权限:

$ ls -l root-file 
-rwsr-sr-x 1 root root 15 Nov 18 02:20 root-file

由于为这个文件设置了 set-user-id 位,我希望在执行这个 文件,即使非 root 用户执行它,有效 uid 也会显示为 0(因为 set-user-id 位会导致使用文件所有者的有效用户 id 执行进程,在这种情况下是根)。但是,相反,我在从非 root shell 执行“root-file”时得到以下输出。

$ ./root-file 
1000
uid=1000(chanakya) gid=1000(chanakya) groups=1000(chanakya),4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare)

此文件/或脚本未使用有效用户 ID 0 执行。为什么会这样?

【问题讨论】:

  • root 是否拥有该文件? SUID 位将用户 ID 设置为其所有者的用户 ID,他不一定是 root(尽管出于这个原因,大多数 SUID 程序都归 root 所有)。
  • 是的,root 拥有该文件。查看“ls -l root-file”的输出。

标签: linux file-permissions setuid


【解决方案1】:

你不能在 shell 脚本上使用 setuid...

如果你绝对需要使用 setuid checkout http://isptools.sourceforge.net/suid-wrap.html

通常也可以使用一些自定义 sudo 配置来建立类似的东西...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    相关资源
    最近更新 更多