LinuxParty
Udev (userspace /dev ) es un subsistema de Linux para la detección y gestión dinámica de dispositivos, desde la versión 2.6 del kernel. Es un reemplazo de devfs y hotplug .
Crea o elimina dinámicamente nodos de dispositivo (una interfaz para un controlador de dispositivo que aparece en un sistema de archivos como si fuera un archivo ordinario, almacenado en el directorio /dev ) en el momento del arranque o si agrega un dispositivo o lo elimina de el sistema. Luego propaga información sobre un dispositivo o cambia su estado al espacio de usuario.
Su función es 1) suministrar a las aplicaciones del sistema eventos del dispositivo, 2) administrar los permisos de los nodos del dispositivo y 3) puede crear enlaces simbólicos útiles en el directorio /dev para acceder a los dispositivos, o incluso cambiar el nombre de las interfaces de red.
Una de las ventajas de udev es que puede usar nombres de dispositivo persistentes para garantizar un nombre constante de los dispositivos en los reinicios, a pesar de su orden de descubrimiento. Esta característica es útil porque el núcleo simplemente asigna nombres de dispositivos impredecibles según el orden de descubrimiento.
En este artículo, aprenderemos cómo usar Udev para la detección y administración de dispositivos en sistemas Linux. Tenga en cuenta que la mayoría, si no todas las distribuciones de Linux modernas convencionales vienen con Udev como parte de la instalación predeterminada.
Aprenda los conceptos básicos de Udev en Linux
El demonio udev , systemd-udevd (o systemd-udevd.service ) se comunica con el núcleo y recibe los eventos del dispositivo directamente de él cada vez que agrega o elimina un dispositivo del sistema, o un dispositivo cambia su estado.
Udev se basa en reglas: sus reglas son flexibles y muy potentes. Cada evento de dispositivo recibido se compara con el conjunto de reglas leídas de los archivos ubicados en /lib/udev/rules.d y /run/udev/rules.d .
Puede escribir archivos de reglas personalizadas en el directorio /etc/udev/rules.d/ (los archivos deben terminar con la .rules
extensión) para procesar un dispositivo. Tenga en cuenta que los archivos de reglas en este directorio tienen la máxima prioridad.
Para crear un archivo de nodo de dispositivo, udev necesita identificar un dispositivo usando ciertos atributos como la etiqueta , el número de serie , su número mayor y menor utilizado, el número de dispositivo del bus y mucho más. Esta información es exportada por el sistema de archivos sysfs .
Cada vez que conecta un dispositivo al sistema, el núcleo lo detecta e inicializa, y se crea un directorio con el nombre del dispositivo en el directorio / sys / que almacena los atributos del dispositivo.
El archivo de configuración principal para udev es /etc/udev/udev.conf , y para controlar el comportamiento en tiempo de ejecución del udev daemon, puede usar la utilidad udevadm .
Para mostrar los eventos del núcleo recibidos ( uevents ) y los eventos udev (que udev envía después del procesamiento de la regla), ejecute udevadm con el comando monitor. Luego, conecte un dispositivo a su sistema y observe, desde la terminal, cómo se maneja el evento del dispositivo.
La siguiente captura de pantalla muestra un extracto de un evento ADD después de conectar un disco flash USB al sistema de prueba:
$ udevadm monitor
Monitorear eventos de dispositivos en Linux
Para encontrar el nombre asignado a su disco USB, use la utilidad lsblk que lee el sistema de archivos sysfs y udev db para recopilar información sobre los dispositivos procesados.
$ lsblk
Listar dispositivos de bloque en Linux
A partir de la salida del comando anterior, se nombra el disco USB sdb1
(la ruta absoluta debe ser /dev/sdb1
). Para consultar los atributos del dispositivo desde la base de datos udev, use el comando info .
$ udevadm info /dev/sdb
Consultar atributos de dispositivo de Udev DB en Linux
Cómo trabajar con reglas Udev en Linux
En esta sección, discutiremos brevemente cómo escribir reglas udev . Una regla se compone de una lista separada por comas de uno o más pares clave-valor. Las reglas le permiten cambiar el nombre de un nodo de dispositivo del nombre predeterminado, modificar los permisos y la propiedad de un nodo de dispositivo, activar la ejecución de un programa o script cuando se crea o elimina un nodo de dispositivo, entre otros.
Escribiremos una regla simple para iniciar un script cuando se agregue un dispositivo USB y cuando se elimine del sistema en ejecución.
Comencemos creando los dos scripts:
$ sudo vim /bin/device_added.sh
Agregue las siguientes líneas en el device_added.sh
script.
#!/bin/bash echo "Dispositivo USB agregado en fecha: $(date)" >>/tmp/scripts.log
Abre el segundo script.
$ sudo vim /bin/device_removed.sh
Luego agregue las siguientes líneas al device_removed.sh
script.
#!/bin/bash echo "Dispositivo USB eliminado en fecha: $(date)" >>/tmp/scripts.log
Guarde los archivos, cierre y haga que ambos scripts sean ejecutables.
$ sudo chmod +x /bin/device_added.sh $ sudo chmod +x /bin/device_removed.sh
A continuación, creemos una regla para activar la ejecución de los scripts anteriores, llamada /etc/udev/rules.d/80-test.rules .
$ vim /etc/udev/rules.d/80-test.rules
Agregue estas dos reglas siguientes en él.
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/bin/device_added.sh"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/bin/device_removed.sh"
dónde:
"=="
: es un operador para comparar por igualdad."+="
: es un operador para agregar el valor a una clave que contiene una lista de entradas.- SUBSYSTEM: coincide con el subsistema del dispositivo de evento.
- ACTION: coincide con el nombre de la acción del evento.
- ENV{DEVTYPE}: coincide con un valor de propiedad del dispositivo, tipo de dispositivo en este caso.
- RUN: especifica un programa o script para ejecutar como parte del manejo de eventos.
Guarde el archivo y ciérrelo. Luego, como root, dígale a systemd-udevd que vuelva a cargar los archivos de reglas (esto también recarga otras bases de datos, como el índice del módulo del kernel), ejecutando.
$ sudo udevadm control --reload
Ahora conecte una unidad USB a su máquina y verifique si device_added.sh
se ejecutó el script. En primer lugar, el archivo scripts.log debe crearse en / tmp .
$ ls -l /tmp/scripts.log
[root@localhost ~]# ls -l /tmp/scripts.log
-rw-r--r-- 1 root root 194 may 21 19:09 /tmp/scripts.log
[root@localhost ~]# cat /tmp/scripts.log
Dispositivo USB agregado en fecha Thu May 21 19:09:42 CEST 2020
Dispositivo USB eliminado en fecha: Thu May 21 19:09:45 CEST 2020
Dispositivo USB agregado en fecha Thu May 21 19:09:48 CEST 2020
[root@localhost ~]#
Verifique el registro de secuencias de comandos después de agregar USB
Luego, el archivo debe tener una entrada como " Dispositivo USB eliminado en fecha_hora ", como se muestra en la captura de pantalla.
$ cat /tmp/scripts.log
[root@localhost ~]# cat /tmp/scripts.log
Dispositivo USB agregado en fecha Thu May 21 19:09:42 CEST 2020
Dispositivo USB eliminado en fecha: Thu May 21 19:09:45 CEST 2020
Dispositivo USB agregado en fecha Thu May 21 19:09:48 CEST 2020
[root@localhost ~]#
Verifique el registro de secuencias de comandos después de quitar el USB
Para obtener más información sobre cómo escribir reglas udev y administrar udev, consulte las entradas manuales udev y udevadm respectivamente, ejecutando:
$ man udev $ man udevadm
Resumen
Udev es un administrador de dispositivos notable que proporciona una forma dinámica de configurar nodos de dispositivos en el /dev
directorio. Asegura que los dispositivos se configuran tan pronto como se enchufan y se descubren. Propaga información sobre un dispositivo procesado o cambia a su estado, al espacio del usuario.
Si tiene preguntas o ideas para compartir sobre este tema, use el formulario de comentarios.

-
Seguridad
- El firewall IPFire para Linux obtiene soporte para criptografía post-cuántica en túneles IPsec
- China presenta un potente cortador de cables de aguas profundas que podría restablecer el orden mundial
- ¿Qué piensan los desarrolladores del kernel de Linux sobre Rust?
- Cómo crear puntos de restauración del sistema en Linux con Timeshift y por qué debería hacerlo
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Snort para Windows, detección de Intrusos y seguridad.
- Drones, vigilancia y reconocimiento facial: una startup llamada 'Sauron' presenta un sistema de seguridad para el hogar de estilo militar
- Conexión Segura NFS en Linux, Tunelizar NFS sobre SSH y Configuración de NFS sobre SSH para Mayor Seguridad
- ¿Olvidó su contraseña? Cinco razones por las que necesita un administrador de contraseñas
- Cómo limitar las conexiones SSH (puerto TCP 22) con ufw en Ubuntu Linux
- Utilizar ssh sin contraseña con ssh-keygen y ssh-copy-id
- Millones de teléfonos móviles podrían ser vulnerables a la vigilancia del gobierno chino
- Cómo limitar las conexiones SSH a la red local en Linux
- Los televisores inteligentes son como un «caballo de Troya digital» en los hogares
- Detección de Intrusiones con las herramientas: BASE y Snort.