Название может запутать, поэтому сформулирую техническое задание точнее. Есть некоторый хост, на котором необходимо выполнить некоторые команды посредством remote ssh. Как настроить собственно remote ssh я писал в предыдущим заметках. Допустим такая команда
отрабатывает правильно. Обратите внимание, что доступ по ssh происходит от имени пользователя sshuser, поэтому в команде 2 раза происходит вызов sudo:
- первый раз на хосте, с которого осуществляется удаленное управление, запускает ssh-подключение от имени пользователя sshuser;
- второй раз sudo вызывается для разрешения пользователю sshuser выполнить команду ipfw от имени суперпользователя.
Для этого в файл /usr/local/etc/sudoerc на хосте, который управляется удаленно необходимо добавить строку
Из командной строки с правами суперпользователя проблем нет. А теперь попробуем настроить такие же действия из веб-интерфейса.
Помещаем в php-скрипт строку
($cmd);
а сам скрипт работает от имени пользователя www. Естественно, что у www нет прав для выполнения команды sudo -u sshuser, поэтому придется пойти на добавление в команду ЕЩЕ ОДНОГО вызова sudo для запуска приведенной выше команды с правами суперпользователя, вот так:
($cmd);
А в файл /usr/local/etc/sudoerc на хосте, на котором работает php-скрипт управления необходимо добавить строку
Вот такой вот cloaking позволяет выполнять необходимые команды на хосте без прямого доступа по ssh через веб-интерфейс.