首页 > 解决方案 > Ubuntu 在 18.04 中限制运行 curl 命令

问题描述

当特定设备连接到我的机器时,我使用 Udev 规则调用 curl 命令。它与 Ubuntu 14.04 完美配合。一旦我将机器升级到 Ubuntu 18.04,它就会停止工作。

我的udev规则是这样的

ACTION=="add|remove", ENV{PRODUCT}=="acd/3520/*", RUN+="/home/leapset/system/devicemanager/trigger-device-connection.sh"

在脚本内部,它调用 curl 命令,如下所示

curl -X GET ' http://127.0.0.1:8080/moxy/rest/device/connectivity/change ' -m 2 2> /dev/null &

尽管我已将超时时间增加到 30 秒,但它总是说 curl 命令超时。

在 Ubuntu 18.04 中进行了哪些更改,阻止我使用上述实现?

标签: ubuntucurlubuntu-18.04

解决方案


我在下面的帖子中找到了答案。

https://lists.freedesktop.org/archives/systemd-devel/2018-August/041195.html

似乎对 Udev 服务的限制使我们无法使用上述功能。

默认服务配置(/lib/systemd/system/udev.service)阻止我们调用任何 IP

[Service]
Type=notify
OOMScoreAdjust=-1000
Sockets=systemd-udevd-control.socket systemd-udevd-kernel.socket
Restart=always
RestartSec=0
ExecStart=/lib/systemd/systemd-udevd
KillMode=mixed
WatchdogSec=3min
TasksMax=infinity
MountFlags=slave
MemoryDenyWriteExecute=yes
RestrictRealtime=yes
RestrictAddressFamilies=AF_UNIX AF_NETLINK AF_INET AF_INET6
SystemCallArchitectures=native
LockPersonality=yes
IPAddressDeny=any

为了解决这个问题,我们在文件底部添加了另一个条目。

IPAddressAllow=127.0.0.1

之后 Udev 能够通知设备插入 POS


推荐阅读