我正在运行一个cli-script,它需要一个exec('sudo ...');调用。我知道它在网络上是不安全的,但是在cli中怎么做呢?该脚本由sudoers文件中名为"btcdbit“的用户执行。
发布于 2011-10-10 05:36:01
根据我的经验,设置NOPASSWD选项并不总是有效的,即使它有效,看起来也是不安全的。在我看来,更好的方法是使用phpseclib通过SSH执行sudo。例如:
<?php
include('Net/SSH2.php');
$sftp = new Net_SSH2('www.domain.tld');
$sftp->login('username', 'password');
echo $sftp->read('username@username:~$');
$sftp->write("sudo ls -la\n");
$output = $sftp->read('#Password:|username@username:~\$#', NET_SSH2_READ_REGEX);
echo $output;
if (preg_match('#Password:#', $lines)) {
$ssh->write("password\n");
echo $sftp->read('username@username:~$');
}
?>网站"sudo in php“详细阐述了
发布于 2011-10-03 09:55:16
只要btcdbit在您希望它能够运行的程序的sudoers中,您就应该能够使用任何PHP函数(如exec或system )来运行它。如果您不希望在向btcdbit请求密码时被捕获,请确保在sudoers中使用NOPASSWD选项(例如,参见http://www.ducea.com/2006/06/18/linux-tips-password-usage-in-sudo-passwd-nopasswd/ )。
发布于 2011-10-03 09:56:22
它应该和exec一样简单(‘/usr/bin/sudo {script}')。
https://stackoverflow.com/questions/7630420
复制相似问题