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