我很困惑第二行在这段代码中做了什么。我认为应该向用户评估$ runas。什么是$<做?这包含在CGI脚本中。
my $runAS = (getpwnam("username"))[2];
$runAS = $< if ($runAS == 0);
答案 0 :(得分:12)
$<
是perl中的special variable:
这个过程的真正意义。你可以改变真正的uid和 通过使用POSIX :: setuid()同时有效的uid。以来 更改为$&lt;需要系统调用,检查$!改变后尝试 检测任何可能的错误。
答案 1 :(得分:6)
来自http://perldoc.perl.org/perlvar.html
$<
这个过程的真正意义。您可以使用POSIX :: setuid()同时更改real uid和有效uid。由于更改为$&lt;需要系统调用,检查$!更改后尝试检测任何可能的错误。
助记符:如果你正在运行setuid,那就是你来自的uid。
答案 2 :(得分:1)
来自perlvar
手册页:
$&LT;这个过程的真正意义。
因此,$<
返回用户的真实数字ID。这不是用户的用户名,而是系统管理员分配的号码。例如,如果您的用户名是aglassman
而我的thb
,则在同一系统上,那么您的UID可能是1005,而我的,1006,这取决于系统管理员首先创建的帐户。在Linux平台上,请参阅系统的UID文件/etc/passwd
。