我有以下“根文件”,其内容如下:
$ 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
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 执行。为什么会这样?