pm2 - 拒绝非root用户权限的启动脚本

时间:2018-03-29 19:16:21

标签: node.js root pm2

我刚刚安装了pm2(在Debian 9上),我需要运行几个用户的NodeJS服务器。每个用户都有自己的NodeJS服务器,我需要在它们下运行。不是根。

例如我有用户“user1”:

  • 我可以正常控制pm2
  • 用于启用启动脚本的user1上的此命令: pm2 startup
  • 然后我将copypaste outputed命令root并执行...
  • 现在已创建给定用户的启动脚本

pm2仍适用于user1,但重启后我无法控制pm2和Iam收到此错误: [PM2][ERROR] Permission denied, to give access to current user: $ sudo chown user1:user1 /home/user1/.pm2/rpc.sock /home/user1/.pm2/pub.sock

如果我在root上执行此命令,我可以再次控制user1上的pm2,但所有NodeJS服务器都以root身份执行!!

我需要在每次重启时'授予'权限..

如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

我发现自己为什么不行。我的用户名是dot(domain.com),systemd没有将其识别为有效用户名...因为该服务是在root下启动的。

快速解决方法是在systemd中找到自动生成的服务,并将用户名替换为id -u <user>找到的用户ID

答案 1 :(得分:0)

我不确定以下方法是否有任何风险,但确实解决了我面临的同样问题。

1- open new terminal (fresh, without sudo permission)
2- sudo chmod -R 777 /home/user1/.pm2 (gives permission to the .pm2 folder)
3- pm2 start index.js (Note that there is no sudo here)
4- pm2 save
5- pm2 startup
6- Restart your computer and check pm2 monit
7- It should list your index process now. If not, try from 1-5, 8, and then 6.
8- paste the command listed in step 5

答案 2 :(得分:0)

您可能使用root启动了pm2任务。因此,通过以下方式检查您正在使用的系统进程:

sudo systemctl -a

如果找到一个单元名称pm2-root,则需要将其删除。运行命令sudo systemctl stop pm2-root和sudo systemctl disable pm2-root。然后使用您的用户名开始该过程。

请确保您使用 pm2-sammy ,并且将 sammy 作为用户名。