2012-06-07 116 views
4

我很困惑,第二行在這段代碼中做了什麼。 $ runas應該評估爲用戶的uid,我認爲。 $ <做什麼?這包含在CGI腳本中。在這種情況下,<Perl在做什麼?

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

回答

12

$<是Perl中的一個special variable

這一進程的實際uid。您可以使用POSIX :: setuid()同時更改實際的uid和有效的uid。由於 更改爲$ <需要系統調用,請檢查$!嘗試更改 以檢測任何可能的錯誤。

+1

謝謝,我知道這很簡單。 – aglassman

+0

我看到你也引用了這個參考,它只是隱藏在超鏈接中。 –

1

perlvar手冊頁:

< $這個過程的實際uid。

因此,$<返回用戶的真實數字ID。這不是用戶的用戶名,而是系統管理員分配的號碼。例如,如果您的用戶名是aglassman,而我的thb在同一個系統上,那麼您的UID可能是1005,而我的是1006,具體取決於系統管理員最先創建的哪個帳戶。在Linux平臺上,請參閱您的系統UID文件/etc/passwd

6

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

$< 

這一進程的實際uid。您可以使用POSIX :: setuid()同時更改實際uid和有效uid。由於更改$ <需要系統調用,請檢查$!在更改後嘗試檢測任何可能的錯誤。

助記符:如果您正在運行setuid,則是您來自的用戶。

+0

我喜歡你引用你的參考。 –

相關問題