Разрешить любому пользователю в группе предохранителей размонтировать

В настоящее время я пытаюсь написать пару конфигурационных файлов systemd / udev, которые позволят мне авторизовать / отключать устройства MTP Android на моем ноутбуке Arch Linux. Это заняло у меня некоторое время, но пока это работает очень хорошо.

Теперь я хотел бы, чтобы любой пользователь с разрешениями fuse смог размонтировать устройство. Пока это возможно только для того же пользователя, что и один go-mtpfs .

Я хорошо знаю, что MTP спроектирован таким образом, что вы можете просто отключить устройство без каких-либо последствий, но при появлении сообщения об ошибке при нажатии «Извлечь» в Nautilus это неожиданно и не очень приятно.

Я попробовал следующее, но не смог:

  • Добавьте себя в группу fuse , запустите go-mtpfs как root и попытайтесь размонтировать себя
  • Запустите go-mtpfs в качестве пользователя и группы fuse и попытайтесь размонтировать себя как я, также в группе fuse

Есть идеи? Кроме того, если у вас есть элегантный способ достичь того же самого, не полагаясь на группу fuse , я бы хотел услышать об этом!

systemd service (/etc/systemd/system/android-mtp.service) :

 [Service] Type=forking ExecStartPre=/bin/mkdir -p /media/Android ExecStart=/usr/sbin/daemonize -l /var/lock/go-mtpfs.lock /usr/bin/go-mtpfs -allow-other=true /media/Android ExecStop=/bin/umount /media/Android ExecStopPost=/bin/rmdir /media/Android 

правило udev (/etc/udev/rules.d/99-android-mtp.rules) :

 # Google Nexus 7 16 Gb Bootloader & recovery mode SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0666" # Bootloader SUBSYSTEM=="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 media SUBSYSTEM=="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 media SUBSYSTEM=="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" 

  • Группа изменения правил Удева
  • разрешение отклонено / dev / bus / usb /
  • (ubuntu 16.04) .rules file /etc/udev/rules.d/, похоже, не выполняет работу
  • Есть ли атрибут udev / что-то, определяющее, является ли устройство USB-накопителем или нет?
  • Привязка к системным устройствам подключенных устройств Bluetooth
  • Как подождать обнаруженные объемы LVM?
  • Как отпечатать систему Unix
  • Почему xsetwacom не работает с udev?
  • One Solution collect form web for “Разрешить любому пользователю в группе предохранителей размонтировать”

    Группа fuse предназначена для указания, кто может монтировать файловые системы FUSE. Цель заключается не в том, что кто-либо из этой группы может отключить файловые системы, установленные другими. Только пользователь, выполняющий монтаж, или root, может размонтировать файловую систему.

    Вы можете использовать sudo для авторизации пользователей в группе fuse для запуска команды unmount в качестве того же пользователя, который сделал монтаж. Запустите visudo чтобы добавить строку, например:

     %fuse ALL = (fuse) fusermount -u /media/Android 

    Почему вы не делаете монтаж как вы? Это обычный способ использования FUSE.

    Linux и Unix - лучшая ОС в мире.