即使提供了完整路径,为一个用户安装的程序也无法被其他用户访问

即使提供了完整路径,为一个用户安装的程序也无法被其他用户访问

我已经为特定用户(即非 root 用户)安装了所有 npm 包(/home/otheruser/*)

我正在使用 monit 来检查程序是否正在运行。在本例中是 pm2,它位于

/home/otheruser/.nvm/versions/node/v5.2.0/bin/pm2

即便我尝试在终端中使用其他用户的完整路径,即使是 root 用户,也无法使用 pm2。它没有给出任何输出,或者没有发生任何事情,如下所示。

root@server:~$ /home/otheruser/.nvm/versions/node/v5.2.0/bin/pm2 list

每当我使用不同的用户运行节点模块时

root@server:~$ /home/otheruser/.nvm/versions/node/v5.2.0/bin/forever -v
root@server:~$ /home/otheruser/.nvm/versions/node/v5.2.0/bin/db-migrate -v
root@server:~$ /home/otheruser/.nvm/versions/node/v5.2.0/bin/pm2 -v

我在系统日志中看到以下内容

node[5791]: No AX.25 port data configured
node[5791]: No AX.25 port data configured
node[5791]: No AX.25 port data configured

如何让其他用户也能使用此功能

答案1

没有记录不是真正的程序。它是一个 bash 函数,加载到用户的 .profile、.bashrc 或 ... 中,因此 sudo 不会像大多数其他程序一样自动从 $PATH 中获取它。

您可以创建一个符号链接,然后尝试访问它

sudo ln -s "/home/otheruser/.nvm/versions/node/v5.2.0/bin/pm2" "/usr/local/bin"

答案2

您必须在尝试运行 pm2 命令的登录用户(root)的环境变量中添加以下内容,然后它才会起作用

NVM_DIR="/home/otheruser/.nvm"
NVM_BIN="/home/otheruser/.nvm/versions/node/v15.5.1/bin"
PATH="/home/otheruser/.nvm/versions/node/v10.15.3/bin"

相关内容