Pourquoi get ces "permissions refusées" dans POSIX find-grep lisible?

Je fais dans Posix find $HOME +perm 0666 -type f -exec grep -l "XSym" {} \; mais obtenez ceci que je ne comprends pas

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

depuis

 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 

Je n'aime pas la structure de double négation et les choses non-Posix comme ! -perm -g+r,u+r,o+r -prune ! -perm -g+r,u+r,o+r -prune ici qui je pense est équivalent à ! -perm 0444 -prune ! -perm 0444 -prune .

Proposition après le correctif de Kusalananda

je fais

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

Sortie: pas de files. Sortie attendue: de nombreux files avec de nombreux files appropriés. je cours

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

Je reçois

 find: invalid mode '+0666' 

Système: Ubuntu 16.04 64 bits
Grep: 2,25
Trouver: 4.7.0-git

Ces files et directorys ne vous appartiennent pas, ils appartiennent à l'user root et ont des permissions d'access trop ressortingctives pour que find et grep fonctionnent. Par conséquent, find plaint de ne pas pouvoir entrer dans le directory /home/masi/.dbus (pour faire son travail), et grep plaint de ne pas pouvoir lire les files (faire son travail).

Les files et directorys ne vous appartiennent pas, même s'ils se trouvent dans votre directory personnel. La raison pour laquelle ils appartiennent plutôt à l'user root est probablement que vous avez exécuté des choses ( vim et d'autres choses) en tant que root et quels que soient les programmes qui ont créé les files et les directorys.

Vous pouvez changer la propriété de ces files et directorys avec chown masi:masi ( masi:masi doit être remplacé par votre nom d'user et votre nom de groupe par défaut, voir vos autres files), mais vous devez être root pour utiliser sudo chown ...

Si vous voulez vous assurer que tous les files et directorys de votre directory personnel vous appartiennent, faites sudo chown -R masi:masi $HOME , mais assurez-vous d'abord que c'est vraiment ce que vous voulez.

EDIT : Pour find tous les files et directorys de $HOME n'appartiennent pas à l'user masi , faites ceci:

 $ find $HOME \! -user masi