为什么使用 NVM 后,Node 不对所有用户可用?

17

这可能是新手的问题,但我想知道为什么使用nvm安装node时只有该用户可以使用(不是“全局”的)。

假设我正在使用名为“admin”的用户登录服务器:

curl https://raw.githubusercontent.com/creationix/nvm/v0.7.0/install.sh | sh
source ~/.profile

nvm install 0.10.30
nvm use 0.10.30

node -v
# outputs v0.10.30

节点正在为该用户运行,但当我切换到root用户时:

su
node -v

它显示:

The program 'node' can be found in the following packages:
 * node
 * nodejs-legacy
Try: apt-get install <selected package>

为什么这样做?有没有一种方法可以安装Node并使其对所有用户都可用?(我不想每次为新用户安装它。)


因为只有root用户才能将各种文件安装到系统目录中,例如/usr/bin等等。作为普通用户,您的写入权限受到限制,通常只能在自己的主目录下进行操作。/home/admin/bin极不可能出现在其他用户的$PATH中。 - Marc B
1个回答

35

对我来说,这段代码的作用是:n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/ - The Anh Nguyen
这只是在 /usr/local 上设置了 755 权限,这是一个糟糕的想法,会破坏 sudo。 - Kyle Crossman
@Kyle Crossman - 在典型的Linux终端中,我要做的第一件事情之一就是运行 sudo bash,然后在我的根会话中工作 :) 但这是安全地在虚拟机上完成的,完全隔离于那个恶意的“真实世界” ;) 问题:出于好奇,你建议使用哪个组和哪个权限?请记住:“755” 排除 所有人(除了“所有者”)的写入访问权限... - FoggyDay
@FoggyDay,所以在Ubuntu上主要问题是如果没有root登录的权限,你会遇到很多麻烦,这在云环境中并不罕见。/usr/local/bin/sudo需要设置setuid位,而755会覆盖它。因此,您无法通过sudo在没有root登录的机器上运行root级别命令。现在,您需要重新构建服务器,从管理员那里获取帮助,或与老板进行一次尴尬的谈话。最终,对于更多用例来说,更好的解决方案将是针对正在更新的文件夹采取更有针对性的方法。 - Kyle Crossman
2
唉...所以用户只需要在“find”之后再执行一个chmod 4755 /usr/local/bin/sudo(或等效命令)就可以了... - FoggyDay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接