회로 차단기 그룹의 모든 사용자가 제거하도록 허용

회로 차단기 그룹의 모든 사용자가 제거하도록 허용

저는 현재 Arch Linux 노트북에 MTP Android 장치를 자동으로 마운트/마운트 해제할 수 있는 몇 가지 systemd/udev 구성 파일을 작성하려고 합니다. 시간이 좀 걸렸지만 지금까지는 잘 작동하고 있습니다.

fuse이제 권한이 있는 모든 사용자가 장치를 마운트 해제할 수 있기를 바랍니다 . 지금까지는 go-mtpfs시작할 때와 동일한 사용자만 이 작업을 수행할 수 있습니다.

나는 MTP가 아무런 결과 없이 장치를 분리할 수 있도록 설계되었다는 것을 잘 알고 있지만 Nautilus에서 Eject(꺼내기)를 클릭하면 나타나는 오류 메시지는 약간 예상치 못한 것이며 좋지 않습니다.

다음을 시도했지만 실패했습니다.

  • fuse그룹 에 나 자신을 추가하고 go-mtpfs나 자신으로 시작한 root다음 나 자신으로 제거해 보세요.
  • go-mtpfs사용자 및 그룹으로 시작하여 그룹에서도 fuse나 자신으로 제거를 시도했습니다.fuse

어떤 아이디어가 있나요? 또한 팀에 의존하지 않고도 동일한 작업을 수행할 수 있는 우아한 방법이 있다면 fuse이에 대해 듣고 싶습니다!

시스템 서비스 (/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"

답변1

fuse그룹은 FUSE 파일 시스템을 마운트할 수 있는 사람을 나타냅니다. 의도는 이 그룹의 누구도 다른 사람이 설치한 파일 시스템을 마운트 해제하는 것을 허용하지 않는 것입니다. 이를 마운트한 사용자(루트 사용자)만 파일 시스템을 마운트 해제할 수 있습니다.

당신은 그것을 사용할 수 있습니다스도권한 그룹 fuse의 사용자는 설치를 수행한 동일한 사용자로서 제거 명령을 실행합니다. visudo다음과 같이 행을 추가하려면 실행하세요 .

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

직접 설치해보시는 건 어떨까요? 이는 FUSE를 사용하는 일반적인 방법입니다.

관련 정보