#!/bin/sh
echo My effective user id is $EUID
如果你以根用户的身份运行这段脚本,那么你得到的用户id应该为零,否则(作为普通用户运行该脚本)你所得到的用户id为其它值。如果你把文件拥有者改为根用户并使用set-id位,以普通用户身份运行该脚本,并且你得到的用户id为零,那么你的系统就允许suid脚本。
然而,Perl提供一个叫着suidperl的程序,在这种情况下Perl会自动调用该程序。我们在Perl中创建等效测试脚本:
#!/usr/bin/perl
print "My effective user id is $>
";
分别用根用户和普通身份运行该脚本,应该得到两个不相同的用户id。然后,修改拥有者为根用户(作为root)并使用set-id位:
chownroot.root /tmp/suid.pl
chmod +s /tmp/suid.pl
现在当你以普通用户身份执行该脚本,就会调用suidperl而不是Perl,而且有效用户id是零。
注意:这是一个危险的方法,我们不应该轻易使用它——除非在所有可以安全解决问题的方法都无效的无效的情况下。