u='-user "$USER"'
g='\('$(IFS=\ ;printf " -group %d " $(id -G))'\)'
eval "find / $u \( -perm -u=rx -o -prune \) -o \
$g \( -perm -g=rx -o -prune \) -o \
-perm -o=rx -o -prune" | wc -l
Isso funciona. Como as permissões de arquivo são sempre avaliadas no nível mais específico possível, você não precisa -o
r muito . Se um arquivo pertencer a algum usuário e for legível por outros e grupos, mas não pelo proprietário, algum usuário ainda não poderá lê-lo. E então você só precisa começar com a correspondência de permissão mais específica e ir descendo daí, -pruning
o tempo todo.
find: '/proc/3379/task/3379/fd/5': No such file or directory
find: '/proc/3379/task/3379/fd/5': No such file or directory
find: '/proc/3379/task/3379/fd/5': No such file or directory
find: '/proc/3379/task/3379/fd/5': No such file or directory
find: '/proc/3379/task/3379/fdinfo/5': No such file or directory
find: '/proc/3379/task/3379/fdinfo/5': No such file or directory
find: '/proc/3379/task/3379/fdinfo/5': No such file or directory
find: '/proc/3379/task/3379/fdinfo/5': No such file or directory
find: '/proc/3379/fd/5': No such file or directory
find: '/proc/3379/fd/5': No such file or directory
find: '/proc/3379/fd/5': No such file or directory
find: '/proc/3379/fd/5': No such file or directory
find: '/proc/3379/fdinfo/5': No such file or directory
find: '/proc/3379/fdinfo/5': No such file or directory
find: '/proc/3379/fdinfo/5': No such file or directory
find: '/proc/3379/fdinfo/5': No such file or directory
327652
Como você pode ver, em nenhum momento existe um problema de permissões, apenas alguns problemas ocasionais com o /proc
- o que é inevitável ao gerar arquivos para ler arquivos.