![使用udev挂载U盘。没有权限](https://linux22.com/image/181187/%E4%BD%BF%E7%94%A8udev%E6%8C%82%E8%BD%BDU%E7%9B%98%E3%80%82%E6%B2%A1%E6%9C%89%E6%9D%83%E9%99%90.png)
我想在插入U盘时自动挂载它。
我相信 udev 是解决方案,所以我创建的/etc/udev/rules.d/99_extern_hdd.rules
仅包含:
ACTION=="add", SUBSYSTEM=="block", ENV{ID_VENDOR_ID}=="1058", ENV{ID_MODEL_ID}=="25a2", RUN+="/etc/mount_extern.sh"
该脚本/etc/mount_extern.sh
包含:
#!/bin/bash
ls -dl /media > /tmp/output
ls -dl /media/data >> /tmp/output
echo "mount ${DEVNAME} /media/data" >> /tmp/output
mount ${DEVNAME} /media/data >> /tmp/output 2>&1
但是当我插入磁盘时,输出(/tmp/output
由 创建/etc/mount_extern.sh
)给了我:
drwxr-xr-x 13 root root 4096 Aug 14 10:47 /media
drwxr-xr-x 2 root root 4096 Dec 18 2017 /media/data
mount /dev/sde1 /media/data
mount: /media/data: permission denied.
我不明白为什么我有这个permission denied
。文件夹的权限看起来不错不是吗?当我这样做时sudo mount /dev/sde1 /media/data
,效果也很好
任何想法?
我的操作系统是 Linux archlinux 5.8.10-arch1-1 #1 SMP PREEMPT Thu, 17 Sep 2020 18:01:06 +0000 x86_64 GNU/Linux
答案1
您无法逃避mount
UDev 规则。来自 UDev 联机帮助页:
请注意,由于 systemd-udevd.service 上强制执行默认沙箱,因此在 udev 规则内不允许运行访问网络或挂载/卸载文件系统的程序。
您可以使用systemd-mount
或其他工具,请参阅https://wiki.archlinux.org/index.php/Udev#Mounting_drives_in_rules