請問執行權限的問題
請教各位大大們:
說明一、小弟使用自行寫的一支 perl(030_CreateEmailAccount.pl) 程式,會
由 crontab 執行之(身份是 root)
1.程式中會 use conndb.pm
2.這支程式又會呼叫一些系統程式:pw、chown、chmod 等等
說明二、網頁PHP也會呼叫到 030_CreateEmailAccount.pl(但網頁執行者是 nobody)
在(說明一)中,如果是使用 crontab 執行之則不會有問題,(說明二)由PHP呼叫這
個 030_CreateEmailAccount.pl 則會無法執行。error.log如下:
Can't locate conndb.pm in @INC (@INC contains: /usr/local/lib/perl5/site_perl
/5.6.1/mach /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl
/usr/local/lib/perl5/5.6.1/BSDPAN /usr/local/lib/perl5/5.6.1/mach /usr/local/
lib/perl5/5.6.1 .) at /home/bofan/program/030_CreateEmailAccount.pl line 3.
BEGIN failed--compilation aborted at /home/bofan/program/030_CreateEmailAcco
unt.pl line 3.
這個錯誤訊息,如果我把行號 3 的 conndb.pm 放至 /usr/local/lib/perl5/5.6.1 下
則可解決,想請教各位大大們的是,是否有其他的解決辦法!因為我比較希望能保持所
有的程式放在同一個目錄下,不知 perl 執行時是否有 path 可設,就如同
java 在執行時設的 JAVA_HOME or CLASSPATH 類似的功能。
mkdir: /home/student/CSIE/m90/m9021522: Permission denied
pw: you must be root to run this program
如果由(說明一)的方式執行之則不會有問題,但由 PHP 執行之則會有權限的問題。不
知perl在呼叫外部程式是否有定義執行者身份的方式呢?
ex. perl 程式呼叫的方式如下:
$dir="/home/student/$department/$degree/$user";
`mkdir -p $dir`;
$group="student";
$shell="/bin/sh";
`echo $passwd | /usr/sbin/pw useradd -n $user -d $dir -g $group -c "" -s
$shell -h0`;
--
※ Origin: 交大機械工廠 ◆ From: mis.ndhu.edu.tw
FreeBSD 近期熱門文章
PTT數位生活區 即時熱門文章