一共有 3 台 staging 環境服務器,5 台生產環境服務器,centos7系統。前陣子剛給所有研發配置了自己的賬號,今天有小伙伴說,在其中兩台服務器上 sudo pm2 list 提示:
sudo:pm2:找不到命令
經過一番查找,原因是這樣的:
在運行 sudo 命令時,系統會按照 sudo visudo 中的配置去設置 secure_path (安全路徑),以限制用戶行為。默認的安全路徑如下:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
其他正常的服務器的 node 是安裝在 /usr/bin 目錄下,命令可以正常運行。這兩台服務器是后來配置的,node 的安裝路徑是在
/usr/local/node/vx.xx/bin/
因此提示找不到命令。
網上常見的解決方法是取消 env_reset,並在 bashrc 中用別名重新設置 sudo 命令使用的 PATH 變量。
但是考慮到安全限制以及這個特定的問題,在 /usr/bin 中創建了 pm2 和 node 這兩個軟連接,分別指向 node 安裝目錄的對應命令:
ln -s /usr/local/node/vx.xx/bin/node node ln -s /usr/local/node/vx.xx/bin/pm2 pm2