Запустить приложение как root с pm2

У меня есть демон, который должен запускаться как root при запуске.

Я использую pm2 для запуска других приложений, но не могу понять, может ли он запустить приложение с правами root. Это можно сделать?

Если нет, каковы мои варианты?

Ответ 1

Я бы порекомендовал:

sudo pm2 start index.js

ИЛИ

pm2 start 'http-server' /var/www -p 80
sudo pm2 startup
pm2 save

ИЛИ

pm2 start 'which http-server' /var/www -p 80

Чтобы запустить его в своем HTTP-порту

Кроме того, я всегда ставил -i 0 в конце - это запускает столько рабочих процессов, сколько у вас есть. Проверьте ЭТО

Не обязательно начинать PM2 как root. Если у вас PM2 как root и установлен модуль cli, безопасность - большой риск. Это необходимо только в том случае, если вы запускаете приложение на порту от 1 до 1024

Ответ 2

Если для доступа к номеру порта (например, 80 или 443) ваш демон должен выполняться как root, pm2 рекомендует использовать authbind. Итак, если вы хотите, чтобы пользователь yourusername имел доступ к порту 80, запустите:

$ sudo apt-get install authbind
$ sudo touch /etc/authbind/byport/80
$ sudo chown yourusername /etc/authbind/byport/80
$ sudo chmod 755 /etc/authbind/byport/80
$ authbind --deep pm2 update

И затем используйте authbind --deep pm2 вместо pm2. В документации предлагается создать псевдоним.

Ответ 3

Вы должны запустить pm2 как root (sudo pm2 start app.js), тогда ваше приложение запустится как root

Ответ 4

У меня были проблемы с sudo pm2 start api, но это было с тех пор, как pm2 уже работал без привилегий sudo, поэтому вам нужно запустить:

pm2 kill
sudo pm2 start api

Это сначала убивает декамон pm2, так что он начинается с sudo, но тогда вам нужно sudo для ALL pm2 команд, например: sudo pm2 ls

Ответ 5

Сначала установите pm2 глобально. Затем установите права root на pm2 с помощью этой команды

sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/rpc.sock /home/ubuntu/.pm2/pub.sock