4

このコード スニペットの 2 行目が何をするのか、私は混乱しています。$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 を返します。これはユーザーのユーザー名ではなく、システム管理者が割り当てた番号です。たとえば、同じシステムでユーザー名がaglassmanと mine でthbある場合、システム管理者が最初に作成したアカウントに応じて、UID は 1005 で、私のものは 1006 となる可能性があります。/etc/passwdLinux プラットフォームでは、システムの UIDのファイルを参照してください。

于 2012-06-07T19:05:24.527 に答える