PHP-CLI Sudo Execution - PullRequest
       15

PHP-CLI Sudo Execution

1 голос
/ 03 октября 2011

Я запускаю cli-скрипт, для которого требуется exec ('sudo ...'); вызов. Я знаю, что это небезопасно в Интернете, но как это можно сделать в cli? Сценарий выполняется пользователем, известным как "btcdbit", который находится в файле sudoers.

Ответы [ 3 ]

2 голосов
/ 10 октября 2011

По моему опыту, настройка опции NOPASSWD не всегда работает и даже если она кажется небезопасной. Мне кажется, что лучший подход - если вы можете его использовать - включил бы использование phpseclib для выполнения sudo через SSH. например.

<?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 голос
/ 03 октября 2011

Пока btcdbit находится в sudoers для программы, которую вы хотите, чтобы она могла запускать, вы должны иметь возможность использовать любую из функций PHP, таких как exec или system, для ее запуска. Убедитесь, что вы используете опцию NOPASSWD в sudoers (см., Например, http://www.ducea.com/2006/06/18/linux-tips-password-usage-in-sudo-passwd-nopasswd/), если вы не хотите, чтобы он был захвачен, запрашивая btcdbit пароль.

0 голосов
/ 03 октября 2011

Это должно быть так же просто, как exec ('/ usr / bin / sudo {script}').

...