+ -
当前位置:首页 → 问答吧 → perl sudo的问题

perl sudo的问题

时间:2011-04-08

来源:互联网

perl 程序调试的过程中遇到了这样的问题:
运行环境是linux系统
web server 是apatche
执行perl写的cgi程序:
其中:  
Perl code
         *HOME_BASE = \'/home/awards/public_html/upload/';         
         $su = Sudo->new( {
        sudo         => '/usr/bin/sudo',
        sudo_args    => '',
        username     => 'root', 
        password     => 'apache',
        program      => '/usr/sbin/adduser',
        program_args => "-d $HOME_BASE/$userid -s /sbin/nologin -p ".crypt($passwd,$salt)." $userid",
    });
    $rst = $su->sudo_run();
    if (exists($result->{error})) 
    { 
        die $result->{error};
    } else {
        $year += 1900;
        $mon++;
        print BAK $self->{form}->{email1}."\t$userid\t$passwd\t$year-$mon-$day $hour:$min:$sec\n";
    }
本意,添加一个用户并创建一个同名的目录
但现在的执行结果,这个账户和目录并没有生成。
用户名和密码以及用户注册邮箱, 都保存到对应的文件中,那也就是说命令应该是执行了且没有错误。
请各位帮忙看看。

作者: henry0612   发布时间: 2011-04-08

抄代码你也没抄明白呀!
Perl code
$rst = $su->sudo_run();#返回值$rst
if (exists($result->{error}))#却使用$result来判断错误。 

作者: fibbery   发布时间: 2011-04-08

晕,批评的对, 虽说不是我写的
我却得解决问题。

作者: henry0612   发布时间: 2011-04-08

此处代码,已经修改如下:
  *HOME_BASE = \'/home/awards/public_html/upload/';  
  $su = Sudo->new( {
  sudo => '/usr/bin/sudo',
  sudo_args => '',
  username => 'root', 
  password => 'apache',
  program => '/usr/sbin/adduser',
  program_args => "-d $HOME_BASE/$userid -s /sbin/nologin -p ".crypt($passwd,$salt)." $userid",
  });
  #$rst = $su->sudo_run();
  #$result = $su->sudo_run();
  if (exists($result->{error})) 
  { 
  die $result->{error};
  } else {
  $year += 1900;
  $mon++;
  print BAK $self->{form}->{email1}."\t$userid\t$passwd\t$year-$mon-$day $hour:$min:$sec\n";
  }
但执行的结果,还是一样。。
用户信息,写入了文件,
账户和目录却没有生成。

作者: henry0612   发布时间: 2011-04-08