我怎么可以运行perl脚本需要root?(how can I run a perl script w

2019-09-30 06:06发布

我需要执行位于/根perl脚本/使用ssh从另一台计算机或在同一台计算机从PHP脚本/。 问题是,我只是不知道如何让PHP登录到根帐户excecute仅该文件。

当用户$我不能访问/根/脚本/,所以我不能使用excec或系统调用它。 我已经使用ssh登录到sudo的苏试过,当我把我的密码,它挂起。

我离开这里的代码:

<?php
include('Net/SSH2.php');


$ssh = new Net_SSH2('IP');
if (!$ssh->login('user', 'password')) {
exit('Login Failed');
}else{
echo ("login suscess");
}
echo $ssh->read(']$');

echo $ssh->write("sudo su\n");

echo $ssh->read('user:');
//the code normally runs if I dont write the lines below

$ssh->write('password\n');//here I try to get ssh the root pass but php wont respond after this
echo $ssh->read('user]#');//normally this would work to show the root prompt  but I don't know what happens


?>

我希望你能帮助我在这里。

Answer 1:

通常你会告诉sudo的是网络服务器,用户可以无需使用密码进行身份验证执行脚本。 你必须添加一行类似下面的/etc/sudoers

www-data ALL=(ALL:ALL) NOPASSWD: /root/scripts/script.pl

这将让www数据用户执行script.pl通过sudo,而无需输入密码。

然后利用PHP执行脚本

exec('sudo /root/scripts/script.pl');


Answer 2:

  1. Echo'ing了$ SSH-> write()调用并没有真正做多。

  2. 须藤需要密码。 下面是关于如何处理phpseclib的网站的例子: http://phpseclib.sourceforge.net/ssh/examples.html#sudo



文章来源: how can I run a perl script which needs root?