Запуск демона как непривилегированного пользователя

Я пытаюсь настроить сервер приложений Thin Ruby на своем Ubuntu VPS. Я создал конкретную учетную запись, установил rbenv под нее вместе со всеми драгоценными камнями.

Я ищу удобный способ достижения следующих целей:

  1. Запустите приложение Thin Rack под моей учетной записью без привилегий.
  2. Сделать приложение запущенным как демон
  3. Пусть демон запускается автоматически всякий раз, когда система загружается
  4. Сделать перезапуск демона
  5. Сделать приложение доступным для Nginx через сокет домена unix.

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

Для запуска во время загрузки добавьте строку к вашему пользователю crontab-файл (используя crontab -e ):

@reboot / path / to / your / script с параметрами

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

Вам просто нужно адаптировать шаблон сценария запуска вашего дистрибутива. Я уверен, что у всех есть такие шаблоны.

Если вы используете systemd, вы можете дать пользователю возможность использовать его в файле unit.

Если вы используете старые сценарии инициализации, скрипт, вероятно, использует startproc или startproc . Вы можете добавить параметры для этих оболочек для настройки идентификатора пользователя.

Или вы делаете программу SUID (не для root, а для предполагаемого пользователя) и ограничиваете права выполнения доверенными пользователями (или только root).