
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 -perm
opción.
La sintaxis anterior es estándar, excepto por la -ls
parte (común pero no POSIX) que puede reemplazar en -exec ls -disl {} +
sistemas que find
no admiten -ls
obtener 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 ejemploFreeBSDfind
es
find . ! -perm +700
Ambos funcionan de la misma manera. -perm /700
o -perm +700
coincidir si alguno de los bits de permiso del propietario está configurado; !
niega eso, entonces ! -perm /700
o ! -perm +700
coincide si ninguno de los bits de permiso del propietario está configurado. Los demás bits se ignoran.
Respuesta3
Si usa sfind
algún programa que use libfind
o 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
.