当我输入类似的命令时,find / -name ??.conf
输出包含很多目录,例如:
find : /home/simmer/.local/share/gvfs-metadata : Permission Denied
我没有得到想要的结果。
但如果我使用相同的命令sudo
sudo find : /home/simmer/.local/share/gvfs-metadata
然后它就会显示预期的结果。
为什么我需要sudo
特权才能做到这一点?
答案1
您不应该收到该错误,因为该目录应该归您所有。我猜你已经运行图形应用程序sudo
。
以您自己的身份登录时,请更正所有权(使用时请务必小心chown
)sudo
。
sudo chown -R $USER: ~/.local/share/gvfs-metadata
现在您不需要sudo
搜索该目录。
通常,权限错误find
是由于您没有目录的读取权限而发生的,许多由 root 拥有的系统目录都是这种情况。您可以使用(在命令中添加和操作之前要非常小心)或者如果您不想以 root 身份搜索,只需将错误附加到命令中sudo find
即可消除结果混乱...2>/dev/null
find /some/path -some_test some_condition 2>/dev/null
答案2
如果find
命令由非超级用户执行,则无法访问不属于该用户的文件和目录,或者未向该用户授予“r、w、x”权限。如果要检查这一点,请键入
ls -l /home/simmer/.local/share/gvfs-metadata
此命令应返回类似以下内容:
drwx------ 2 simmer simmer 12288 Jun 8 17:39 gvfs-metadata
第一列代表文件或目录的所有者所设置的权限。第三和第四列分别代表文件/文件夹的所有者和组。
如果您不是所有者,或者您没有足够的权限(如第一列所示),程序find
将无法访问它们。但是,使用该sudo
命令会提升您的权限,因此由于该find
命令现在由超级用户执行,因此现在可以访问目录及其子目录。