Вопрос

Я хочу создать веб-интерфейс для управления / администрирования моей системы Linux. Например. Я хочу иметь возможность добавлять пользователей, управлять файловой системой и тому подобными вещами. Думайте об этом как клон cPanel, но скорее для системного администратора, а не для веб-администратора.

Я думал о создании службы, работающей на моем компьютере и выполняющей все задачи системного уровня. Таким образом, у меня может быть четкое разделение между моим веб-интерфейсом и реальной логикой. Страницы сервера могут затем вызывать мой специализированный сервер или ставить задачи в очередь. Однако я не уверен, что это будет наилучшим способом решения этой проблемы.

Думаю, еще один важный вопрос: как мне поступить с безопасностью при создании чего-то подобного?

PS: Это как проект для домашних животных и опыт обучения, поэтому меня не интересуют существующие решения, которые делают подобное.

Это было полезно?

Решение

Демон специализированной службы работает как отдельный пользователь - назовем его 'managerd'. Настройте файл / etc / sudoers так, чтобы 'managerd' мог выполнять различные команды, которые вы хотите, чтобы он мог запускать от имени пользователя root без пароля.

Пропустите на веб-сервере " триггер " файлы, содержащие команды для запуска в каталоге, который находится в режиме «770» с группой, членами которой являются только пользователь веб-сервера и «managerd». Убедитесь, что 'managerd' проверяет правильность владения файлами перед выполнением команды.

Убедитесь, что сторона веб-интерфейса заблокирована - запустите ее только по протоколу HTTPS, потребуйте аутентификацию и, если это возможно, добавьте списки ACL для конкретного IP-адреса, чтобы вы могли получить к нему доступ только из известных мест.

Другие советы

Ваше решение кажется очень разумным решением корневой проблемы.

Пара предложений:

<Ол>
  • Привязка «специализированной службы» к localhost также поможет гарантировать, что запросы не могут быть сделаны извне.
  • Проверка функций запроса вызова, которые выполняют действия, а не напрямую предоставляют сервису полный неограниченный доступ. Так что вызывая функцию «addToGroup (пользователь, группа)» вместо универсального "executeAction (команда)".
  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top