2011-11-18 182 views
0

我有兩個Perl腳本:在Perl腳本中執行一個setuid perl腳本

  1. getPwd.pl - setuid的perl腳本,它返回一個密碼

    子getOraPwd { ... 回報getOraPwd ; } getOraPwd();

  2. testDBConn.pl

我想打電話給getPwd.pl在testDBConn.pl腳本並分配getPwd腳本到$ password變量的結果連接到數據庫。記住getPwd.pl腳本是setuid,因此設置testDBConn.pl以運行getPwd.pl

例如。

$username="blah"; 
$password=result from getPwd.pl 
$dsn=qq{...}; 
$dbh=DBI->connect($dsn, $username, $password)}; 
+1

所以,你的問題到底是什麼? – JRFerguson

回答

0

調用setuid的Perl腳本是調用系統上的任何其他可執行文件沒有什麼不同:

my $password = `getPwd.pl`; 

不過,我建議你不要使用setuid的Perl腳本。任何語言的setuid可執行文件都有很多缺陷。此外,使用它們在Perl 5.10.1中已棄用,並在5.12中刪除。更好的選擇是在sudo下運行getPwd.pl

+0

謝謝。你介意對sudo進行闡述嗎?它有多容易設置?必須編輯什麼等 – user621092

+0

@ user621092 - 如果您有任何現代Linux發行版,則幾乎可以肯定已經有sudo。配置文件是'/ etc/sudoers'。你會希望能夠運行沒有密碼的'sudo getPwd.pl'。我不記得所有的配置需要我的頭頂,但'人sudoers'和谷歌應該讓你剩下的路。 – frezik