PHP-CLI Sudo执行

时间:2011-10-03 01:44:17

标签: sudo php

我正在运行一个cli脚本,需要一个exec('sudo ...');呼叫。我知道它在网络上不安全,但如何在cli中完成?该脚本由名为“btcdbit”的用户执行,该用户位于sudoers文件中。

3 个答案:

答案 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中,您就应该能够使用execsystem之类的任何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}')一样简单。