Я использую phpseclib для вызова команды ssh из php.как запустить команду ubuntu с правами root с помощью phpseclib
$ip = 'ip_address';
$login = 'user';
$password = 'password';
$ssh = new SSH2($ip);
$ssh->login($login, $password);
В приведенном ниже примере все нормально (потому что я не нужны права):
$command = 'ifconfig';
$result = $ssh->exec($command); // result = 'eth0 ..., eth1 etc.'
Проблема возникает в следующем примере:
$command = 'ip addr flush dev eth1';
$result = $ssh->exec($command); // result = 'Failed to send flush request: Operation not permitted'
Я попытался войти в систему с Sudo су :
$result = $ssh->read('$'); // result = '..... [email protected]:~$'
$result = $ssh->write("sudo su\n"); //result = true
$result = $ssh->read(':'); // result = 'sudo su\n [sudo] password for user:'
$result = $ssh->write($password."\n"); // result = true
$result = $ssh->read('#'); //result = '[email protected]:/home/user#
Кажется, что t (я нахожусь на корне), но:
$command = 'ip addr flush dev eth1';
$result = $ssh->exec($command); // result = 'Failed to send flush request: Operation not permitted'
Где проблема? Заранее спасибо!
попробуйте добавить себя в файл sudoers, а затем просто введите sudo, за которым следует команда (вам не нужно вставлять пароль). –
'su' уже является двоичным. нет необходимости запускать его 'sudo', потому что он ВСЕГДА работает от имени root. –
Я пробовал что-то подобное в терминале: 'adduser user sudo', а результат: ' Пользователь пользователя 'уже является членом' sudo''. Затем я использовал только «su» в терминале, и результат: «Пароль: su: Ошибка аутентификации» – Krzychu