¿Cómo "encontrar" todos los archivos y carpetas con permisos 0**?

¿Cómo "encontrar" todos los archivos y carpetas con permisos 0**?

Tuve una situación extraña en la que encontré varios archivos y carpetas que tenían permisos 000 establecidos. Esto fue fácilmente reparable mediante:

sudo find . -perm 000 -type f -exec chmod 664 {} \; 
sudo find . -perm 000 -type d -exec chmod 775 {} \;

Desafortunadamente, de repente me di cuenta de que el problema era un poco más complicado con algunos permisos extraños como 044 y algunas otras configuraciones extrañas. Resulta que estos están dispersos y son impredecibles.

¿Existe alguna forma de buscar permisos como 0** u otras configuraciones de permisos muy limitantes?

Respuesta1

Yo usaría algo como esto:

find . ! -perm -u=r ! -perm -u=w ! -perm -u=x -ls

O si prefieres la notación octal:

find . ! -perm -400 ! -perm -200 ! -perm -100 -ls

Desafortunadamente, no tengo idea de cómo tomarlo como una -permopción.

La sintaxis anterior es estándar, excepto por la -lsparte (común pero no POSIX) que puede reemplazar en -exec ls -disl {} +sistemas que findno admiten -lsobtener un resultado similar.

Respuesta2

ConÑUfind, puedes hacerlo buscando archivos que no coincidan con “ningún bit establecido para el propietario”:

find . ! -perm /700

Lo mismo en por ejemploFreeBSDfindes

find . ! -perm +700

Ambos funcionan de la misma manera. -perm /700o -perm +700coincidir si alguno de los bits de permiso del propietario está configurado; !niega eso, entonces ! -perm /700o ! -perm +700coincide si ninguno de los bits de permiso del propietario está configurado. Los demás bits se ignoran.

Respuesta3

Si usa sfindalgún programa que use libfindo si usa BSD find, puede usar:

find path -perm +0xxx

para encontrar archivos donde se establezca cualquiera de los bits mencionados en el patrón, por lo que

find . ! -perm +0700

debería funcionar en tu caso. Por cierto: esto también es compatible con GNU find.

Tenga en cuenta que esta es una extensión que no se menciona en POSIX ni se implementa en un archivo basado en SVr4 find.

información relacionada