我对这个场景还不太熟悉,我的 Mac 上已经出现了权限问题。我一直在尝试安装 truffle,但遇到了权限问题,因为我的 node_modules 文件夹归 root 所有。我设法将其更改为我的用户,但现在当我尝试运行时,truffle version
它只显示未找到命令:truffle
当我输入ls -la /usr/local/lib/node_modules
以检查权限时,它说仍然有一个由 root 拥有的文件夹:
现在我尝试了所有能找到的命令sudo
,但chown
都不起作用。我甚至不知道为什么——在这个文件夹中,我的用户“nd”有一个权限,另一个权限“root”。有人能帮我吗?我怎样才能将权限从 root 更改为我的用户,以便完全访问目录?
提前致谢!
答案1
听起来有几件事可能是导致该文件出现问题的原因。
首先,快速回顾一下 unix 文件权限:每个文件都有一个与之关联的组和一个用户。每个文件还有三组权限,即用户的权限、组的权限和其他人的所有权限。权限只是意味着:文件是否可读、是否可写以及是否可执行。
在 ls 的输出中,以此行为例(省略了一些不相关的部分)
drwxr-x--x nd wheel <filename>
^111222333 user group
标记的点^
表示此列表是一个目录。常规文件在此处有一个破折号。标记为 1 的 3 个字母组是用户权限。如您所见,rwx
全部显示,这意味着用户可以读取、写入和执行此文件。同时,组成员wheel
被允许读取和执行,但不能写入(r-x
)。最后,所有其他用户只允许执行。
几点说明:1.) 看起来由 root 拥有的条目是..
,这是父目录的简写。这意味着即使..
是由 root 拥有的,也不一定改变谁拥有其中的文件。
2.) 与第一条注释类似,您是否添加了-R
更改文件所有者的时间?否则,更改将不会应用于任何子目录。
您的问题中没有足够的信息来完全回答它。目录结构以及您的路径将有助于找出原因。但是,根据我所知道的信息,我对可能的原因有 3 个猜测。
可能的解释 1:您仅更改了父文件夹的所有者,而不是文件的所有者。请确保您x
对实际文件具有权限。
可能的解释 2:您拥有该文件,但该文件未标记为可执行文件。即使是您拥有的文件,如果它们未标记为可执行文件,您也无法将它们作为命令运行。使用chmod +x filename
使文件可执行。
可能的解释 3:路径不在您的路径中。每个命令行环境都有一个特殊变量,称为PATH
。 (运行echo $PATH
以查看您的路径)。它是您计算机上的文件夹列表。每当您运行命令时,您的 shell 都会检查它是否可以在路径上列出的任何文件夹中找到您请求运行的程序。如果找不到,您将得到(command) not found
。网上有关于如何修改路径的指南,但您应该确保包含 truffle 的文件夹位于该列表中的某个位置。