Я настраиваю некоторую автоматизацию с помощью ботов с дистанционным управлением. Крайне важно, чтобы у этих ботов были только права на выполнение определенных команд (я не могу открыть слишком много разрешений в sudoers чтобы разрешить произвольные команды).

Он хорошо работает, я могу настроить на несколько команд , которые мне нужно и обойти ограничение пароля (потому что нет никакой возможности ввести пароли при ИНГАХ sudo с директивой NOPASSWD в файле sudoers Но есть проблема. Некоторые сценарии, особенно те, которые написаны в некоторых ... э-э, средах PHP ... ожидаются для запуска из определенного каталога, который считается корнем проекта.

Этот каталог в большинстве случаев принадлежит другому пользователю, www-data или apache . Хорошо, я могу разрешить бот , чтобы запустить сценарий , как этот пользователь, но я не могу cd на правильный путь в неинтерактивной сессии, потому что это не представляется возможным включить cd - диск в качестве команды в файле sudoers

Обычно я бы сделал что-то вроде cd /var/www/path/to/app && php whatever.php --some args , но я не могу найти способ настроить этот шаблон в файле sudoers , похоже, что нет быть возможным

Вы знаете способ обойти это?

1 ответ1

0

Единственное, что мне известно, это создание небольшого сценария оболочки, содержащего ваш код, а затем разрешение пользователю / боту выполнить сценарий.

sudo cd /var/www/path/to/app && php whatever.php --some args

не будет работать, потому что это две команды, а sudo позволяет вам запустить одну. но если вы поместите это в небольшой скрипт (скажем, /var/www/scripts/something/script.sh):

#!/bin/bash
cd /var/www/path/to/app && php whatever.php --some args

Вы можете запустить его с помощью

sudo /var/www/scripts/something/script.sh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .