Ich habe das benutzerdefinierte Shell-Skript ausgeführt, wenn ein FireWire-Gerät mit meinem PC verbunden/von ihm getrennt wurde. Das Skript wurde erfolgreich ausgeführt, aber ich habe festgestellt, dass das Netzwerk in diesem Skript nicht verfügbar ist.
Hier ist meine Regel:
[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"
Hier ist mein Bash-Skript:
[root@ rules.d]# cat /root/remove.bash
#!/usr/bin/bash
nslookup superuser.com 8.8.8.8 >> /root/udev.log 2>&1
Und dies wird in /root/udev.log gedruckt, nachdem das Gerät getrennt wurde:
[root@ rules.d]# cat /root/udev.log
;; connection timed out; no servers could be reached
Gleichzeitig, wenn ich den Befehl manuell von der Konsole aus ausführe:
[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
Ich bin völlig verwirrt. Wie soll das passieren? SELinux deaktiviert. Firewall aktiviert. Fedora 28 aktualisiert.
Irgendwelche Vorschläge?
UDP:
Dank anSchwerkraft- behoben durch ÄnderungIPAddressDeny=beliebigZuIPAddressAllow=beliebigin der Datei systemd-udevd.service.
Antwort1
Der Udev-Dienst ist so konfiguriert, dass er Seccomp-Filter verwendet, um einzuschränken, welche Sockets erstellt werden können (dies wurde jedoch kürzlich gelockert, um Inet/Inet6 zuzulassen), sowie Cgroup-BPF-Socket-Filter, um einzuschränken, an welche IP-Adressen Pakete gesendet/von welchen Pakete empfangen werden können.
Insbesondere die Optionen in systemd-udevd.service:
[Unit]
# Attaches a cgroup-wide eBPF socket filter
IPAddressDeny=any