【发布时间】: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