4

我对这段代码中第二行的作用感到困惑。我认为 $runas 应该评估为用户的 uid。$< 有什么作用?这包含在 CGI 脚本中。

my $runAS = (getpwnam("username"))[2];
$runAS = $< if ($runAS == 0);
4

3 回答 3

12

$<是perl中的一个特殊变量:

这个进程的真实 uid。您可以使用 POSIX::setuid() 同时更改真实 uid 和有效 uid。由于对 $< 的更改需要系统调用,请检查 $! 更改后尝试检测任何可能的错误。

于 2012-06-07T19:03:53.550 回答
6

来自http://perldoc.perl.org/perlvar.html

$<

这个进程的真实 uid。您可以使用 POSIX::setuid() 同时更改真实 uid 和有效 uid。由于对 $< 的更改需要系统调用,请检查 $! 更改后尝试检测任何可能的错误。

助记符:如果您正在运行 setuid,则它是您来自的 uid。

于 2012-06-07T19:05:24.887 回答
1

perlvar手册页:

$< 这个进程的真实 uid。

因此,$<返回用户的真实数字 ID。这不是用户的用户名,而是系统管理员分配的号码。例如,如果您的用户名是 aaglassman和 mine, thb,在同一个系统上,那么您的 UID 可能是 1005 而我的用户名可能是 1006,这取决于系统管理员首先创建了我们的哪个帐户。在 Linux 平台上,查看/etc/passwd系统 UID 的文件。

于 2012-06-07T19:05:24.527 回答