Модифицируйте системные конфигурационные файлы и используйте системные команды через веб-интерфейс - PullRequest
3 голосов
/ 13 января 2011

Недавно я получил проект, и мне интересно, как сделать что-то правильно и безопасно.

Ситуация следующая:

Существуют классы для управления пользователями linux, пользователями и базами данных mysql, а также виртуальными хостами apache. Они используются для автоматизации добавления пользователей в небольшой среде общего хостинга. Эти классы затем используются в сценариях командной строки, чтобы предложить хороший интерфейс для системного администратора.

Теперь меня попросили создать простой веб-интерфейс для предоставления графического интерфейса администратору, а затем предложить некоторые функции непосредственно пользователям (изменить их пароль Unix и другие ежедневные процедуры).

Я не знаю, как реализовать веб-приложение. Он будет работать в Apache (с пользователем apache), но классы должны иметь доступ к файлам и командам, которые могут использоваться только пользователем root для внесения необходимых изменений (например, файлы конфигурации useradd и virtual hosts). При использовании сценариев командной строки это не проблема, так как они запускаются от имени правильного пользователя. Предоставление разрешений пользователю apache, вероятно, было бы опасно.

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

Я видел, как существующие продукты делают похожие вещи (webmin, eBox, ...), но я не знаю, как это работает.

PS: классы, которые я получил, простые, но очень плохо запрограммированные и едва комментируемые. Они на самом деле в PHP, но я планирую перенести их на Python. Затем я хотел бы использовать инфраструктуру Django для создания интерфейса веб-администратора.

Спасибо и извините, если вопрос недостаточно ясен.

РЕДАКТИРОВАТЬ: я немного прочитал о webmin и увидел, что он использует свой собственный мини веб-сервер (называемый miniserv.pl). Это похоже на хорошее решение. Пользователь, использующий этот сервер, должен иметь права на изменение файлов и использование команд. Как я мог сделать что-то подобное с Django? Использовать сервер разработки? Было бы лучше использовать что-то вроде CherryPy?

Ответы [ 2 ]

0 голосов
/ 17 января 2011

Hello Вы можете легко создавать веб-приложения в Python, используя WSGI-совместимые веб-фреймворки, такие как CherryPy2, и шаблоны, такие как Genshi. Вы можете использовать модуль 'subprocess' для управления внешними командами ...

0 голосов
/ 13 января 2011

Вы можете использовать sudo для предоставления пользователю root прав доступа только для тех команд / скриптов, которые необходимы для вашего веб-приложения.

...