telegamochka (telegamochka) wrote in ru_linux,
telegamochka
telegamochka
ru_linux

Category:

sudo через http

Сразу оговорюсь, что речь идет не об интернет-сервере, а о не подключенном к интернету компьютере, управление которым производится со смартфонного клиента, вызывающего через http-запросы (WiFi Ad-Hoc) на компьютере PHP-скрипты выполняющие необходимые действия. Система непубличная и находится в отладке, поэтому прошу не обсуждать вопросы безопасности, актуальные для интернет сервера, но неактуальные для standalone-системы.

Мне необходима возможность обращения со смартфона к таким root'овским командам, как /sbin/init и /sbin/service. Я дописала в файл sudoers сдедующую строку:
ALL ALL=NOPASSWD: /sbin/init, /sbin/service

Смартфонный клиент (его IP 10.0.0.2) обращается по адресу http://10.0.0.1/service.php?cmd=mpd+stop

PHP-скрипт service.php:
<?php
echo shell_exec("/usr/bin/sudo /sbin/service ".$_GET["cmd"]);
?>

Но в результате при обращении смартфона к скрипту система требует ввода пароля. Если же я заменяю строку скрипта на
echo shell_exec("/sbin/service mpd status");
то все проходит нормально (запрос статуса не требует администраторских прав).

Из шелла непосредственно на компе скрипт также работает. Каким образом настроить sudoers, чтобы команда sudo могла выполняться и php-скриптами вызванными через http?

(кросспост в ru_fedora_core, ru_php)
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 63 comments