Как правильно вызывать команды оболочки (в том числе требующие прав root) из веб-приложений PHP / Java / Python? - PullRequest
4 голосов
/ 21 июля 2010

Я с нетерпением жду разработки веб-приложения для удаленного управления системой (например, Webmin). Очевидно, мне нужно будет вызывать команды оболочки, которые будут выполнены, как они были выполнены пользователем root или другим конкретным пользователем, не являющимся никому.

Каковы общие рекомендации для этой задачи?

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

1 Ответ

4 голосов
/ 21 июля 2010

Поскольку речь идет о веб-приложениях для управления собственными задачами, вам необходимо принять во внимание несколько аспектов (по крайней мере, для Java, но обычно для каждого хорошо спроектированного решения):

  • Используйте асинхронную модель для выполнения собственных задач, поскольку некоторые из них могут занимать больше времени, и в браузере пользователь не имеет представления, что-то не так с машиной, интернетом или чем-то подобным.
  • Не используйте Java Runtime # exec () напрямую, потому что довольно легко заставить вещи не работать или делать ошибки, или иметь код, который ведет себя по-разному на разных машинах, или, по крайней мере, использовать его с осторожностью: посмотрите это Статья JavaWorld о возможных ловушках.
  • Если возможно, разделите приложение на на две части : веб-приложение и «агент без головы», который выполняет задачи (и безопасно связывается с веб-приложением). Таким образом, с помощью одного веб-приложения вы можете управлять несколькими машинами (с установленным только «агентом»), и когда с машиной что-то не так, веб-приложение все еще реагирует и может инициировать необходимые шаги восстановления.
  • При работе на одном компьютере (веб-приложение и агент с его исполняемыми командами) вам необходим «план резервного копирования», если приложение «выстрелит себе в ногу», что повлияет на ваш доступ к компьютеру.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...