我有以下“root-file”,其中包含以下内容:
$ 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执行。为什么会这样?
答案 0 :(得分:1)
你不能在shell脚本上使用setuid ......
如果您绝对需要使用setuid checkout http://isptools.sourceforge.net/suid-wrap.html
通常使用一些自定义sudo配置也可以建立这样的东西......