PHP-CLI Sudo执行

PHP-CLI Sudo执行,sudo,php,Sudo,Php,我正在运行一个cli脚本,它需要一个exec('sudo…');呼叫我知道这在web上是不安全的,但是如何在cli中实现呢?脚本由名为“btcdbit”的用户执行,该用户位于sudoers文件中。只要btcdbit位于sudoers中,您希望它能够运行的程序,就应该能够使用任何PHP函数,如exec或system来运行它。如果您不想让sudoers中的NOPASSWD选项被btcdbit密码所困扰,请确保您在sudoers中使用该选项(参见示例)。只要btcdbit在sudoers中,您希望它能

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

只要btcdbit位于sudoers中,您希望它能够运行的程序,就应该能够使用任何PHP函数,如
exec
system
来运行它。如果您不想让sudoers中的NOPASSWD选项被btcdbit密码所困扰,请确保您在sudoers中使用该选项(参见示例)。

只要btcdbit在sudoers中,您希望它能够运行,您就应该能够使用任何PHP函数,如
exec
system
来运行它。如果您不想让sudoers中的NOPASSWD选项被btcdbit的密码问题缠住,请确保您在sudoers中使用该选项。

它应该像exec('/usr/bin/sudo{script}')一样简单。

它应该像exec('/usr/bin/sudo{script}')一样简单.

根据我的经验,设置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:~$');
}
?>


根据我的经验,网站“”详细说明了设置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:~$');
}
?>


网站“”详细说明了如果btcdbit没有password@macintosh264,我会尝试使用NOPASSWD选项进行设置。当您试图通过
php
程序运行
exec
时,您能说明您的体验吗?它只是“卡住”了吗?如果btcdbit没有password@macintosh264,我会尝试使用NOPASSWD选项进行设置。当您试图通过
php
程序运行
exec
时,您能说明您的体验吗?它只是被“卡住”了吗?