Seamos realistas:el sistema de archivos de Linux puede ser complejo. Agregue sistemas de archivos remotos montados, medios extraíbles y cualquier directorio específico del servidor que haya creado, y usted o sus usuarios pueden tener dificultades para recordar exactamente dónde se almacena un archivo determinado. Ahí es donde find
entra el comando. Le permite buscar archivos o directorios según varios criterios. Haré una revisión básica de find
a continuación, pero el enfoque de este artículo es un poco diferente:Buscar recursos por permisos.
¿Por qué necesito buscar por permisos?
- Auditoría de seguridad
- Solucionar problemas de acceso de usuarios
- Solucionar problemas de acceso a aplicaciones
Ejemplo rápido de búsqueda por nombre
Hay otros artículos sobre Habilitar Sysadmin que cubren el find
comandar con eficacia. Sin embargo, resumiré rápidamente el comando aquí.
Sintaxis:
find (where to search) (what to search for)
Ejemplo:
# find /etc -name rsyslog
# find /home/user01 -type d
Sin embargo, este artículo se centra en el uso de -perm
opción, que busca según la configuración de permisos.
Modo absoluto versus modo simbólico
Recuerde que los permisos se establecen mediante el chmod
dominio. El chmod
El comando reconoce tanto el modo absoluto como el modo simbólico. Consulte mi artículo reciente Cómo administrar los permisos de Linux para usuarios, grupos y otros para obtener una revisión de la administración del acceso a los recursos, incluidos los dos modos. El find
El comando también reconoce cualquiera de los modos, por lo que puede usar el que le resulte más natural. Para mí, ese es el modo absoluto. Debe recordar algunas cosas sobre el modo absoluto y el modo simbólico para usar de manera efectiva find -perms
comando.
Modo absoluto
El modo absoluto usa valores octales para representar permisos. Los valores se enumeran en orden según el permiso que se asignará al usuario, grupo y todos los demás.
Por ejemplo:
# chmod 764 file1
Establece el usuario con 7 (rwx), grupo con 6 (rw) y otros con 4 (r) para file1
.
Modo simbólico
El modo simbólico utiliza símbolos para representar los niveles de acceso y utiliza operadores matemáticos para dar (+ ) o eliminar (- ) permisos.
Por ejemplo:
# chmod o+rw file1
Da los otros identidad leer y escribir a file1
.
Encuentre permisos de recursos usando el modo absoluto
La búsqueda de permisos más fundamental no utiliza parámetros adicionales. La declaración dice "buscar un recurso con estos permisos".
Por ejemplo:
# find /etc -perm 777
El comando es:Buscar en /etc
directorio de recursos con el 777 nivel de acceso (rwx para todas las identidades).
El ejemplo anterior solo encuentra recursos con exactamente el permiso especificado, ni más ni menos. ¿Qué pasa si necesitas un poco más de flexibilidad? Hay dos parámetros adicionales que pueden ser muy útiles. El primero es el -
carácter (guión), y el segundo es el /
carácter (barra oblicua). Veamos ambos.
Buscar por -
El uso del -
opción significa "al menos este nivel de permiso está configurado y cualquier permiso superior".
Ejemplo:
# find . -perm -644
Este ejemplo muestra todos los recursos en el directorio actual con al menos 644 permisos.
Buscar por /
El uso del /
opción significa "cualquiera de los permisos enumerados está establecido".
Ejemplo:
# find . -perm /644
Este ejemplo muestra recursos con 644 o mayores permisos.
Encuentre permisos de recursos usando el modo simbólico
El modo simbólico usa el ugo símbolos (usuario, grupo, otros), rwx símbolos (leer, escribir, ejecutar) y operadores matemáticos (como + o - ) para definir permisos.
Buscar por -
El -
La opción funciona igual en modo simbólico que antes en modo absoluto. Muestra recursos con "al menos este nivel de acceso".
Ejemplo:
# find -perm -u+w,g+w
Buscar por /
El /
también funciona igual en modo simbólico. Muestra los recursos con "cualquier permiso enumerado".
Ejemplo:
# find -perm /u+w,g+w
Los permisos estándar de Linux son muy comunes y ahora sabe cómo buscar recursos con un nivel de acceso determinado configurado. Sin embargo, Linux también aprovecha los permisos especiales . El find
El comando también puede mostrar estos permisos.
Encuentre recursos con permisos especiales configurados
Los permisos especiales de Linux establecen controles de acceso adicionales a los recursos. Hay tres permisos especiales:Establecer ID de usuario (SUID), Establecer ID de grupo (SGID) y Sticky Bit. Los detalles de cada uno están fuera del alcance de este artículo, pero permítanme resumir rápidamente:
Eche un vistazo a este artículo para obtener más información sobre los permisos especiales.
Los permisos especiales se configuran usando un cuarto bit (más a la izquierda):
- SUID =4
- SGID =2
- Pedacito adhesivo =1
Consejo :La salida de ls -l
el comando mostrará una s en el campo ejecutable del usuario si SUID está configurado, un s en el campo ejecutable del grupo si SGID está configurado, y una T o t si Sticky Bit está configurado (dependiendo de si ejecutar también está configurado).
El siguiente contenido cubre la búsqueda de archivos con permisos especiales específicos configurados.
Buscar archivos con SUID configurado
Para buscar archivos en los que se define el nivel de acceso SUID, use -perm
opción pero incluye el cuarto dígito. SUID tiene un valor octal de 4 .
Por ejemplo, para buscar recursos con el SUID configurado:
# find /usr/bin -perm 4755
Buscar archivos con SGID configurado
Puede usar la misma sintaxis para mostrar recursos con el permiso SGID definido mediante el valor octal SGID de 2 .
Por ejemplo, para buscar recursos con el SGID configurado:
# find /usr/bin -perm 2755
Buscar archivos con Sticky Bit configurado
Finalmente, puede usar el valor octal de 1 para mostrar los recursos con el Sticky Bit configurado.
Aquí hay un ejemplo de Sticky Bit:
# find /etc -perm /1444
Nota :El -
y /
los parámetros funcionan igual con permisos especiales que con permisos estándar.
[ Otros lectores disfrutaron: Conceptos básicos de administrador de sistemas de Linux:administración de cuentas de usuario]
Ejemplos adicionales
Aquí hay algunos comandos adicionales que pueden ser útiles para mostrar permisos. Mientras escribía el artículo, no dejaba de pensar:Espera, ¿qué pasa con esto? y luego agregar ejemplos de bonificación. Así que aquí hay varios comandos adicionales para la auditoría de permisos.
Bonus 1:Use -no para negar los resultados
Puede usar el -not
opción con find
para especificar cualquier cosa que no coincida con los criterios dados.
El primer ejemplo muestra un find
normal intento, y el segundo muestra find
con -not
.
# find /etc/network -perm 777
El ejemplo anterior muestra los recursos dentro de /etc/network
que hacer tiene 777 permisos configurados.
# find /etc/network -not -perm 777
Este ejemplo muestra los recursos dentro de /etc/network
que tienen permisos que no sean
Bonificación 2:Establecer permisos usando find y chmod
Uno de los beneficios de find
es que incluye una función de ejecución. Puede combinar esto con comandos de seguimiento, como xargs
, rm
o chmod
.
# find -perm -111 -exec chmod -R 777 {} \;
En este ejemplo, el {}
los caracteres representan los resultados de find
comando, y el \;
los caracteres representan una terminación de chmod
comando.
Advertencia :Tenga cuidado de comprender exactamente cuál será el efecto de su ejecución combinada de "buscar + otros comandos". Un error tipográfico podría fácilmente find
todos los archivos en /etc
y luego intente eliminarlos o configurar permisos que bloqueen a los usuarios legítimos fuera de sus directorios de inicio.
Bono 3:Mostrar permisos usando ls y grep
A veces no necesita la funcionalidad avanzada de find
dominio. En cambio, solo necesita una visualización rápida y fácil de permisos específicos. En ese caso, confíe en ls
y grep
comandos.
Ejemplo:
# ls -l | grep rwxrw-r--
Este comando muestra todo el contenido del directorio con los permisos especificados.
Bonificación 4:Mostrar permisos de ACL
El find
El comando no muestra fácilmente los archivos con los permisos de la Lista de control de acceso (ACL) aplicados. En ese caso, use el getfacl
comando en su lugar.
Ejemplo:
# getfacl file1
Consulte Introducción a las listas de control de acceso (ACL) de Linux para obtener más información sobre las listas de control de acceso.
Resumir
El find
El comando es una utilidad útil para mostrar directorios o archivos que necesita ubicar. Sin embargo, find también puede ser una gran herramienta de seguridad porque muestra directorios y archivos con permisos específicos. Como administrador de sistemas, puede usar esa información para asegurarse de que los recursos del servidor estén configurados de acuerdo con las políticas de seguridad de su empresa. No olvides que puedes usar el >>
redirector para documentar estos permisos. Dicho documento se puede utilizar como referencia de permisos para futuras auditorías.
[ ¿Está pensando en la seguridad? Consulte esta guía gratuita para impulsar la seguridad de la nube híbrida y proteger su negocio. ]
-
Encuentra archivos y directorios en Linux con el comando de búsqueda
-
Búsqueda de archivos en la línea de comandos (instrucciones)
-
Cómo encontrar archivos en CentOS 8 en la línea de comandos
-
Cómo encontrar archivos con el comando fd en Linux
-
¿Cómo usar expresiones regulares con el comando de búsqueda?
Cómo usar el comando de suspensión de Linux con ejemplos
Cómo usar el comando who en Linux con ejemplos
Cómo usar el comando RPM (con ejemplos)
Cómo encontrar archivos en la línea de comandos de Ubuntu
Cómo encontrar archivos con el comando fd en Linux
Cómo encontrar archivos con docenas de criterios con el comando Bash Find
Permiso especial | Descripción |
SUID | Un archivo es ejecutado por un usuario con la identidad del propietario, incluso si ese usuario no es el propietario |
SGID | El contenido de un directorio hereda automáticamente la asociación de grupo de la carpeta principal (ideal para directorios compartidos por equipos de proyecto) |
Broca adhesiva | El archivo se carga en la memoria automáticamente y nadie más que el propietario no puede eliminarlo ni modificarlo |