web-dev-qa-db-ja.com

ユーザー/グループによるMTPデバイスのマウントを制限する

Ubuntu(14.04 LTS)のインストールを、USBストレージが無効になっているキオスクのようなシステムに変換する作業を行っています。ただし、これは、ユーザーがAndroid電話などのMTPデバイスをマウントすることを妨げません。

この問題は、MTPデバイスの自動マウントの防止 と同じではなく、AskUbuntuの他の質問で解決されています。

  1. 特定のユーザーまたはグループによるMTPおよびその他のストレージデバイスのマウントを永続的に禁止したい。 (たぶんmtpfs/gvfsを無効にすることで?)
  2. 書き込み可能なストレージデバイスを接続する他の方法は何ですか(UMTSなど)。

-

編集:/ mediaをadmin:myusbaccessgroupにchownすることで、問題のグループのアクセス権を取り消して、USBストレージを無効にしたことを追加する必要があります。明らかに、USBの使用を禁止したいユーザー/グループはmyusbaccessgroupにありません。

-

更新:

この答えには賞金が支払われましたが、成功した解決策は見つかりませんでした。 チャットルームディスカッション が続く前に回答をご覧ください。

あきらめて、Ubuntu 12.04をインストールしました。MTPをすぐにサポートしていないためです。ただし、PTPデバイスは引き続きマウントされます。

4
Akshay Rao

ユーザー/グループのパーミッションを使用して動作させることもできませんでした。また、libmtpが電話のボリュームをマウントする方法もわかりません。

これは、udev側からユーザーグループをチェックするソリューションです。

  1. ルートに切り替え

    Sudo -i
    
  2. GUIユーザーをチェックする汎用スクリプトを作成し、指定されたグループに属しているかどうかを確認します

    nano /lib/udev/check_gui_user_group.sh
    

    次の行を追加します:

    #!/bin/bash
    
    export GUI_$(grep -z USER /proc/$(pgrep -nx $1)/environ)
    groups $GUI_USER | grep -qFw "$2"
    

    実行許可を追加する

    chmod +x /lib/udev/check_gui_user_group.sh
    
  3. MTPデバイス:/lib/udev/rules.d/のlibmtpルールを上書きします。

    cp /lib/udev/rules.d/69-libmtp.rules /etc/udev/rules.d/69-libmtp.rules
    

    次に、編集用に開きます。

    nano /etc/udev/rules.d/69-libmtp.rules
    

    LABEL="libmtp_usb_rules"の直後に次の行を追加します。

    PROGRAM!="check_gui_user_group.sh gnome-session myusbaccessgroup", GOTO="libmtp_rules_end"
    

    Ubuntu 14.04 Unity&Gnomeでは、gnome-sessionを使用できます。他のデスクトップの場合は、pstree -uまたはps aux | grep -i sessionを使用して確認してください

    ルールの意味:gnome-sessionのユーザーがmyusbaccessgroupグループにない場合は、すべてのlibmtpルールをスキップします。

  4. PTPデバイス:別のルールファイルを追加

    nano /etc/udev/rules.d/99-usb-storage-remove.rules
    

    ルールを追加

    ACTION=="add", ENV{GPHOTO2_DRIVER}=="PTP", ENV{DRIVER}!="", PROGRAM!="check_gui_user_group.sh gnome-session myusbaccessgroup", RUN+="/bin/sh -c 'echo -n %k >/sys%p/subsystem/drivers/%E{DRIVER}/unbind'"
    
  5. その他のUSBストレージデバイス:このルールを前の手順のルールファイルに追加します。

    ACTION=="add", DRIVER=="usb-storage|uas|ums-*", PROGRAM!="check_gui_user_group.sh gnome-session myusbaccessgroup", RUN+="/bin/sh -c 'echo -n %k >/sys%p/driver/unbind'"
    

    ドライバーのリストをどこから取得するかを知るには、これを試してください:

    ls /lib/modules/$(uname -r)/kernel/drivers/usb/storage/
    
  6. ルールをリロードする

    udevadm control -R
    
  7. 電話を再接続してください。


テストとトラブルシューティング:

  1. グループがまだセットアップされていない場合はセットアップします

    addgroup myusbaccessgroup
    
  2. グループからユーザーを削除します。

    deluser user myusbaccessgroup
    
  3. Udevモニターを実行する

    udevadm monitor -u
    
  4. そのデバイスを再接続します

  5. 実行されたものを確認する

    udevadm test /sys/device/...
    
  6. グループにユーザーを追加

    adduser user myusbaccessgroup
    
  7. 手順3からやり直します。

注:

テストにはKubuntu 15.04(実際のマシン)とUbuntu 14.04(VirtualBoxでの新規インストール)を使用しました。

  • Wiko Bloom(Android 4.4.2)を使用して、両方のシステムで適切に機能するMTPモードをテストしました。
  • PTPモードをテストできませんでした。これは自動マウントされていなかったためです。
  • その他の外部ストレージ:フラッシュディスクと外部ハードドライブ。両方のシステムのテストに合格します。

参照:

3
user.dz

私は最終的に同じ要件を持っていました。

AndroidのMTP、PTPをブロックする最良の方法は、ubuntuでサービスを無効にすることです。

この場所をルート/ usr/lib/gvfsとして入力します

GUIを使用する傾向がある場合、「Sudo nautilus」は簡単になります。

「sudo nautilus」およびnはcomputer/usr/lib/gvfsにナビゲートします

サービスのリストが表示されます。適切なサービスを右クリックして実行権限を削除します-> properties-> permission-> unckeck "execute"、読み取り専用アクセスを "read only"から "none"に変更します

MTPおよびPTPのブロック

の実行権限を削除します

gvfsd-mtp

gvfs-mtp-volume-monitor(安全側)

gvfsd-gphoto2

gvfs-gphoto2-volume-monitor(安全側)


Apple I電話はafpを介してマウントできます

gvfsd-afpの実行許可を削除してください

gvfs-afc-volume-monitor(安全側)

一部のAndroidモバイルは大容量ストレージモードを使用してそこにマウントできます。SDカードは/ media/userのフォルダーのアクセス許可を400に変更します

user- ubuntuで作成されたユーザー。

chmod 400

または、ユーザーのマウント許可を削除します。

3
TD_Krish

これは、Ubuntu 14.04でテストされたUnityとGnomeの両方で機能するはずです。

  1. 新しいグループを追加します

    addgroup myusbaccessgroup
    
  2. Gvfsモニターの所有者グループを変更する

    chown root:myusbaccessgroup /usr/lib/gvfs/gvfs-*-monitor
    
  3. パブリック/その他の読み取りと実行の許可を削除します

    chmod 750 /usr/lib/gvfs/gvfs-*-monitor
    
  4. User1をグループに入れてuser2を残すか、グループから削除します

    adduser user1 myusbaccessgroup
    deluser user2 myusbaccessgroup
    
  5. ログアウト

0
user.dz