find: trucos simples para encontrar ciertos permisos específicos

diciembre 12, 2020 , 0 Comments

find

find es un comando muy útil para encontrar directorios y ficheros, ya que tiene multitud de opciones para filtrar las búsquedas por fechas, tamaño, tipo, etc. Una herramienta muy potente que se puede usar para multitud de fines si se combina con tuberías, o con xargs, como hemos mostrado en otros tutoriales. Por ejemplo, puedes eliminar todos los ficheros localizados de una tacada.

También se usa para auditorías realizadas para seguridad o por los administradores del sistema. Por ejemplo, para localizar algunos ficheros o directorios con ciertos permisos activos, lo que podría resultar peligroso para la seguridad. Este tutorial lo dedicaré especialmente a algunas opciones que tal vez no conocías y que te pueden ayudar a localizar ciertos ficheros con permisos muy concretos.

Ya sabes que con la opción -perm puedes buscar ficheros/directorios que tengan una serie de permisos concretos. Pero adicionalmente puedes usar algunas opciones extras para afinar aún más tu búsqueda o ampliarla.

Por ejemplo, imagina que quieres localizar los ficheros o directorios de la ruta actual que tengan permisos totales 777 (rwxrwxrwx), lo que puede ser un riesgo para la seguridad:

<br data-mce-bogus="1">

find . -perm 777<br data-mce-bogus="1">

 

 

Esto es lo típico, pero imagina que quieres buscar los que no tienen esos permisos, para ello puedes usar -not:


find . -not -perm 777

Si quieres ampliar un poco más la búsqueda, y que no encuentre ficheros o directorios con unos permisos tan concretos, puedes usar -. Con ello, estarás especificando que se encuentren los archivos con «al menos» esos permisos o superiores (en este caso al menos 644):

find . -perm -644

También puedes buscar ficheros/directorios que tengan activos los bits SUID, SGID, y Sticky Bit, que también podrían representar problemas de seguridad como sabes. Pero claro, para que busque cualquiera, sin importar el resto de los permisos (ya sean 777, 644, o el que sea), debes usar / para obviar los permisos estándar. Para ello, puedes usar respectivamente:


find . -perm /4000
find . -perm /2000
find . -perm /1000

En este caso, no importará si son 4777, 4644, o lo que sea. Los localizaría todos los que tengan activo ese bit.

Por último, también puedes usar este otro comando, aunque debes tener precaución o podrías configurar de forma inapropiada algunos ficheros que tienen que tener permisos específicos. Pero si sabes lo que estás haciendo, puedes modificar todos los permisos de los ficheros localizados por find a los que deseas con una sola orden:

find -perm -744 -exec chmod -R 644 {} \;

En este caso cambia todos los 744 encontrados a 644…


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.