Gostaria apenas de salientar esta resposta de @Gilles em Excluir caminhos que fazem encontrar reclamações sobre permissões - Unix & Stack Exchange do Linux ; Basicamente, envolve uma construção para find
que faz com que ela não desça diretórios ilegíveis e, nesse sentido, provavelmente também seja um pouco mais rápida.
Isso parece funcionar para mim:
With GNU find
or any other find
that supports the -readable
and -executable
predicates:
find / -type d ! -readable ! -executable -prune -o -type f -name netcdf -print
(Edit: tentei este comando exacto e encontrei "find: '/ var / lib / php5': Permission denied", onde tem permissões drwx-wx-wt
e propriedade de root
; mas o seguinte comando não denunciou uma única permissão negada:)
ou também isto:
find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print
Por algum motivo, eu preciso adicionar todo o g+r,u+r,o+r
(atalho para isso é a+r
), caso contrário, se um deles for deixado de fora, eu ainda recebo acessos "Permissão negada".
Aqui está um resumo de como eu vejo isso (observe o operador -a
(e) em find
is implícito entre dois predicados ):
find / # find starting from path /
-type d # match type is directory
! -perm -a+r # (and) match not permissions of 'r'ead present
-prune # ignore what matched above and do not descend into it
-o # or (whatever didn't match above)
-type f # match type is file
-name 'netcdf' # (and) match name is 'netcdf'
-print # print what matched above
Observe que sem o último -print
, recebo alguns itens extras mostrados (que não têm nada a ver com -name 'netcdf'
); o -print
garante que apenas as correspondências de nome sejam impressas (se houver).