我正在运行一个cli脚本,需要一个exec('sudo ...');呼叫。我知道它在网络上不安全,但如何在cli中完成?该脚本由名为“btcdbit”的用户执行,该用户位于sudoers文件中。
答案 0 :(得分:2)
根据我的经验设置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”详细说明
答案 1 :(得分:1)
只要btcdbit处于您希望它能够运行的程序的sudoers中,您就应该能够使用exec
或system
之类的任何PHP函数来运行它。确保你在sudoers中使用NOPASSWD选项(例如,参见http://www.ducea.com/2006/06/18/linux-tips-password-usage-in-sudo-passwd-nopasswd/),如果你不希望它被问到btcdbit的密码。
答案 2 :(得分:-2)
它应该像exec('/ usr / bin / sudo {script}')一样简单。