为什么要让 POSIX find-grep 中的这些“权限被拒绝”可读?

为什么要让 POSIX find-grep 中的这些“权限被拒绝”可读?

我在 Posix 中这样做find $HOME +perm 0666 -type f -exec grep -l "XSym" {} \;,但得到了我不明白的信息

find: ‘/home/masi/.dbus’: Permission denied
grep: /home/masi/.viminfo: Permission denied
grep: /home/masi/.cache/dconf/user: Permission denied

自从

drwx------  3 root root     4096 Jun 18 14:49 .dbus
-rw-------  1 root root     6266 Jun 18 13:24 .viminfo
-rw------- 1 root root 2 Jun 18 14:51 /home/masi/.cache/dconf/user

我不喜欢双重否定结构和非 Posix 的东西,比如! -perm -g+r,u+r,o+r -prune 这里我认为这相当于! -perm 0444 -prune.

库萨拉南达修复后的提案

我愿意

# http://unix.stackexchange.com/a/121020/16920
find / -type d \! -perm 0666 -prune -o -type f -name '._*' -print

输出:没有文件。预期输出:许多文件,其中包含许多适当的文件。我跑

find / -type d \! -perm +0666 -prune -o -type f -name '._*' -print

我明白了

find: invalid mode ‘+0666’

系统:Ubuntu 16.04 64位
Grep:2.25
查找:4.7.0-git

答案1

这些文件和目录不属于您,它们属于用户root,并且具有过于严格的访问权限findgrep工作权限。因此,find抱怨无法进入目录/home/masi/.dbus(执行其工作),并grep抱怨无法读取文件(执行其工作)它是工作)。

这些文件和目录不属于您,即使它们位于您的主目录中。它们属于用户的原因root很可能是您一直在运行某些东西(vim以及其他东西)root,无论这些程序创建了文件和目录。

chown masi:masi您可以使用(应替换为您的用户名和默认组名,请参阅您的其他文件)更改这些文件和目录的所有权masi:masi,但您需要这样做root,因此请使用sudo chown ....

如果您想确保全部你的主目录中的文件和目录属于你sudo chown -R masi:masi $HOME,但首先要确保这确实是你想要的。

编辑:查找$HOME其中的所有文件和目录属于用户masi,执行以下操作:

$ find $HOME \! -user masi

相关内容