为什么我只能运行“sudo node”而不能运行“node”?

为什么我只能运行“sudo node”而不能运行“node”?

我刚买了一台新的 MacBook,并使用官方安装程序安装了 node.js。

由于某种原因,我只能使用sudo node而不是 来运行 node.js。node我仔细检查了 $PATH 并且 node 的路径就在那里。

nikke at Nicks-MacBook-Pro in ~
$ node
-bash: node: command not found
nikke at Nicks-MacBook-Pro in ~
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/nikke/.rvm/bin
nikke at Nicks-MacBook-Pro in ~
$ /usr/local/bin/node -v
-bash: /usr/local/bin/node: Permission denied
nikke at Nicks-MacBook-Pro in ~
$ sudo /usr/local/bin/node -v
v0.10.12

我的同事有同样的电脑,他可以顺利运行节点而无需执行 sudo。这是正常的吗?我可能做错了什么?安装程序没有提到必须执行 sudo。

我在使用 git 时也遇到了这个问题,例如 doing git commitalso says Permission denied

答案1

这种现象有两个部分 - i>地点或 ii>自然,该文件可能要求您以管理员身份登录,因为它可能会以某种方式破坏系统稳定,或者您可能根本没有执行该文件所需的权限。

至于它在同事的计算机上运行,​​这可能是由于上述因素的变化造成的。

尝试更改文件的权限(您可能再次需要管理员权限)。如果可能,您也可以尝试在单独的位置执行它。须藤通过提升您作为操作系统管理员(拥有所需权限)的职位,完美地完成了这项工作。这是操作系统固有的众多安全检查之一,可防止意外更改/损坏系统。

进口商:您选择的位置有珍贵的系统相关文件,用户无权编辑。

另外,你的朋友以前是否曾以超级用户身份登录过,使用

??

如果是,则表示他已经以超级用户身份登录,无需再次登录。root 用户权限由#在提示符的末尾,而不是$

答案2

可能是因为程序 /usr/local/bin/node 不允许“普通”用户运行。显然,您需要成为 root 用户才能运行它。这就是为什么需要 sudo 的原因。

相关内容