udev shell 腳本內網路不可用

udev shell 腳本內網路不可用

當 FireWire 裝置與我的 PC 連接/斷開連接時,我會執行自訂 shell 腳本。腳本執行成功,但我發現該腳本內網路不可用。

這是我的規則:

[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"

這是我的 bash 腳本:

[root@ rules.d]# cat /root/remove.bash
#!/usr/bin/bash
nslookup superuser.com 8.8.8.8 >> /root/udev.log 2>&1

這是裝置斷開連線後列印到 /root/udev.log 的內容:

[root@ rules.d]# cat /root/udev.log 
;; connection timed out; no servers could be reached

同時,如果我從控制台手動執行命令:

[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

我完全困惑了。會怎樣發生呢? SELinux 已停用。防火牆已啟用。 Fedora 28 已更新。

有什麼建議麼?

UDP:

謝謝重力- 透過改變來修復IP位址拒絕=任意IP 位址允許=任意在 systemd-udevd.service 檔案中。

答案1

udev 服務配置為使用 seccomp 過濾器來限制可以建立的套接字(儘管最近已放寬允許 inet/inet6),以及 cgroup BPF 套接字過濾器來限制可以傳送到/接收的 IP 位址封包。

具體來說,systemd-udevd.service 中的選項:

[Unit]
# Attaches a cgroup-wide eBPF socket filter
IPAddressDeny=any

相關內容