据我了解,我可以创建一个udev
规则来运行脚本,例如当插入 USB 设备时:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0123", ATTRS{idProduct}=="0815", SYMLINK+="mydevice", ACTION=="add", RUN+="/path/to/my/script.sh"
我现在的问题是,这个脚本拥有哪些权利?
我发现了两个与该主题相关的问题:
- udev 运行时是否需要 sudo:问题出在其他地方,标题中的问题从未得到解答
- udev 规则运行的脚本未显示通知:答案说“以相同用户
sudo
身份运行notify-send
(而不是root
)”,对我来说,这意味着a)脚本有权sudo
并且b)将像root
您未指定用户一样运行
我找不到任何文件能够进一步说明该RUN
参数是否存在于udev
有关其权利和能力的规则中。
答案1
通常,除非另有说明,否则由某个程序启动的程序将以与该程序相同的用户身份运行。在本例中,即systemd-udevd
,并且它以 root 身份运行,因此程序以 root 身份运行(这就是为什么您需要使用sudo
以另一个用户身份运行)。
即使是这样,有一些限制:
请注意,由于强制执行的默认沙箱,udev 规则内不允许运行访问网络或挂载/卸载文件系统的程序
systemd-udevd.service
。