我目前正在尝试编写一些systemd / udev配置文件,这些文件允许我在Arch Linux笔记本电脑上自动安装/卸载MTP Android设备.我花了一些时间,但到目前为止它运作良好.
现在,我希望任何具有保险丝权限的用户都能够卸载设备.到目前为止,只有与一个go-mtpfs相同的用户才能启动.
我很清楚MTP的设计是为了让您可以直接拔出设备而不会产生任何后果,但是在Nautilus中单击“d出”时会d出一条错误消息,这是一种意想不到的事情,并不是很好.
我尝试了以下,但失败了:
>将自己添加到保险丝组,以root身份启动go-mtpfs并尝试以我自己的身份卸载
>启动go-mtpfs作为保险丝用户和组,并尝试以我自己的方式卸载,也在保险丝组中
任何的想法?此外,如果你有一个优雅的方式来实现同样的事情,而不必依赖保险丝组,我很想听听它!
systemd服务(/etc/systemd/system/androID-mtp.service):
[Service]Type=forkingExecStartPre=/bin/mkdir -p /media/AndroIDExecStart=/usr/sbin/daemonize -l /var/lock/go-mtpfs.lock /usr/bin/go-mtpfs -allow-other=true /media/AndroIDExecStop=/bin/umount /media/AndroIDExecStopPost=/bin/rmdir /media/AndroID
udev规则(/etc/udev/rules.d/99-androID-mtp.rules):
# Google Nexus 7 16 Gb Bootloader & recovery modeSUBSYstem=="usb", ATTR{IDvendor}=="18d1", ATTR{IDProduct}=="4e40", MODE="0666" # BootloaderSUBSYstem=="usb", ATTR{IDvendor}=="18d1", ATTR{IDProduct}=="d001", MODE="0666" # Recovery# Google Nexus 7 16 Gb PTP mode (camera)SUBSYstem=="usb", ATTR{IDvendor}=="18d1", ATTR{IDProduct}=="4e43", MODE="0666" # PTP mediaSUBSYstem=="usb", ATTR{IDvendor}=="18d1", ATTR{IDProduct}=="4e44", MODE="0666" # PTP media with USB deBUG on# Google Nexus 7 16 Gb MTP mode (multimedia device)SUBSYstem=="usb", ATTR{IDvendor}=="18d1", ATTR{IDProduct}=="4e41", MODE="0666" # MTP mediaSUBSYstem=="usb", ATTR{IDvendor}=="18d1", ATTR{IDProduct}=="4e42", MODE="0666" # MTP media with USB deBUG on# Google Nexus 7 MTP mode : automatic unmount when unplugged (all androID versions)ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e41", ACTION=="remove", RUN+="/usr/bin/systemctl stop androID-mtp.service"ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e42", ACTION=="remove", RUN+="/usr/bin/systemctl stop androID-mtp.service"ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e41", ACTION=="remove", RUN+="/usr/bin/systemctl stop androID-mtp.service"ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e42", ACTION=="remove", RUN+="/usr/bin/systemctl stop androID-mtp.service"# Google Nexus 7 MTP mode : automatic mount when plugged (all androID versions)ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e41", ACTION=="add", TAG+="systemd", ENV{SYstemD_WANTS}="androID-mtp.service"ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e42", ACTION=="add", TAG+="systemd", ENV{SYstemD_WANTS}="androID-mtp.service"ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e41", ACTION=="add", TAG+="systemd", ENV{SYstemD_WANTS}="androID-mtp.service"ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e42", ACTION=="add", TAG+="systemd", ENV{SYstemD_WANTS}="androID-mtp.service"
解决方法:
保险丝组用于指示谁可以安装FUSE文件系统.目的不是该组中的任何人都可以卸载其他人安装的文件系统.只有执行挂载或root的用户才能卸载文件系统.
您可以使用sudo授权保险丝组中的用户以执行挂载的同一用户身份运行卸载命令.运行visudo添加如下行:
%fuse ALL = (fuse) fusermount -u /media/AndroID
你为什么不像自己一样安装?这是使用FUSE的常用方法.
总结以上是内存溢出为你收集整理的udev – 允许保险丝组中的任何用户卸载全部内容,希望文章能够帮你解决udev – 允许保险丝组中的任何用户卸载所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)