我对这段代码中第二行的作用感到困惑。我认为 $runas 应该评估为用户的 uid。$< 有什么作用?这包含在 CGI 脚本中。
my $runAS = (getpwnam("username"))[2];
$runAS = $< if ($runAS == 0);
$<
是perl中的一个特殊变量:
这个进程的真实 uid。您可以使用 POSIX::setuid() 同时更改真实 uid 和有效 uid。由于对 $< 的更改需要系统调用,请检查 $! 更改后尝试检测任何可能的错误。
来自http://perldoc.perl.org/perlvar.html
$<
这个进程的真实 uid。您可以使用 POSIX::setuid() 同时更改真实 uid 和有效 uid。由于对 $< 的更改需要系统调用,请检查 $! 更改后尝试检测任何可能的错误。
助记符:如果您正在运行 setuid,则它是您来自的 uid。
从perlvar
手册页:
$< 这个进程的真实 uid。
因此,$<
返回用户的真实数字 ID。这不是用户的用户名,而是系统管理员分配的号码。例如,如果您的用户名是 aaglassman
和 mine, thb
,在同一个系统上,那么您的 UID 可能是 1005 而我的用户名可能是 1006,这取决于系统管理员首先创建了我们的哪个帐户。在 Linux 平台上,查看/etc/passwd
系统 UID 的文件。