サーキットブレーカグループのすべてのユーザーが削除できるようにする

サーキットブレーカグループのすべてのユーザーが削除できるようにする

私は現在、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ファイルシステムをマウントできる人を表します。意図は、このグループの誰も他の人がインストールしたファイルシステムをアンマウントすることを許可しないことです。これをマウントしたユーザー(rootユーザー)のみがファイルシステムをマウント解除できます。

あなたはそれを使用することができますSudo権限グループfuseのユーザーは、インストールを実行したのと同じユーザーとして削除コマンドを実行します。visudo次のように行を追加するには、実行してください。

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

自分で設置してみてはいかがでしょうか?これはFUSEを使用する一般的な方法です。

関連情報