Ejecuto el script de shell personalizado cuando el dispositivo FireWire se conecta/desconecta de mi PC. El script se ejecutó correctamente pero encontré que la red no está disponible dentro de este script.
Aquí está mi regla:
[root@ rules.d]# cat 99-superuser.rules
ACTION=="remove", KERNEL=="fw*1", SUBSYSTEM=="firewire", RUN+="/root/remove.bash"
ACTION=="add", KERNEL=="fw*1", SUBSYSTEM=="firewire",RUN+="/root/add.bash"
Aquí está mi script bash:
[root@ rules.d]# cat /root/remove.bash
#!/usr/bin/bash
nslookup superuser.com 8.8.8.8 >> /root/udev.log 2>&1
Y esto es lo que imprime en /root/udev.log después de desconectar el dispositivo:
[root@ rules.d]# cat /root/udev.log
;; connection timed out; no servers could be reached
Al mismo tiempo, si ejecuto el comando manualmente desde la consola:
[root@ rules.d]# nslookup superuser.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: superuser.com
Address: 151.101.1.69
Estoy absolutamente confundido. ¿Cómo va a pasar? SELinux deshabilitado. firewall desactivado. Fedora 28 actualizado.
¿Alguna sugerencia?
UDP:
Gracias agravedad- arreglado cambiandoDirección IPDenegar=cualquieraaDirección IPAllow=cualquieraen el archivo systemd-udevd.service.
Respuesta1
El servicio udev está configurado para usar filtros seccomp para limitar qué sockets se pueden crear (aunque esto se ha relajado recientemente para permitir inet/inet6), así como filtros de sockets BPF de cgroup para limitar a qué direcciones IP se pueden enviar o recibir paquetes. .
Específicamente, las opciones en systemd-udevd.service:
[Unit]
# Attaches a cgroup-wide eBPF socket filter
IPAddressDeny=any