Ubuntu(14.04 LTS)のインストールを、USBストレージが無効になっているキオスクのようなシステムに変換する作業を行っています。ただし、これは、ユーザーがAndroid電話などのMTPデバイスをマウントすることを妨げません。
この問題は、MTPデバイスの自動マウントの防止 と同じではなく、AskUbuntuの他の質問で解決されています。
-
編集:/ mediaをadmin:myusbaccessgroupにchownすることで、問題のグループのアクセス権を取り消して、USBストレージを無効にしたことを追加する必要があります。明らかに、USBの使用を禁止したいユーザー/グループはmyusbaccessgroupにありません。
-
更新:
この答えには賞金が支払われましたが、成功した解決策は見つかりませんでした。 チャットルームディスカッション が続く前に回答をご覧ください。
あきらめて、Ubuntu 12.04をインストールしました。MTPをすぐにサポートしていないためです。ただし、PTPデバイスは引き続きマウントされます。
ユーザー/グループのパーミッションを使用して動作させることもできませんでした。また、libmtpが電話のボリュームをマウントする方法もわかりません。
これは、udev
側からユーザーグループをチェックするソリューションです。
ルートに切り替え
Sudo -i
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
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ルールをスキップします。
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'"
その他の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/
ルールをリロードする
udevadm control -R
電話を再接続してください。
テストとトラブルシューティング:
グループがまだセットアップされていない場合はセットアップします
addgroup myusbaccessgroup
グループからユーザーを削除します。
deluser user myusbaccessgroup
Udevモニターを実行する
udevadm monitor -u
そのデバイスを再接続します
実行されたものを確認する
udevadm test /sys/device/...
グループにユーザーを追加
adduser user myusbaccessgroup
手順3からやり直します。
注:
テストにはKubuntu 15.04(実際のマシン)とUbuntu 14.04(VirtualBoxでの新規インストール)を使用しました。
参照:
man udev
PROGRAM
の使用を探します。私は最終的に同じ要件を持っていました。
AndroidのMTP、PTPをブロックする最良の方法は、ubuntuでサービスを無効にすることです。
この場所をルート/ usr/lib/gvfsとして入力します
GUIを使用する傾向がある場合、「Sudo nautilus」は簡単になります。
「sudo nautilus」およびnはcomputer/usr/lib/gvfsにナビゲートします
サービスのリストが表示されます。適切なサービスを右クリックして実行権限を削除します-> properties-> permission-> unckeck "execute"、読み取り専用アクセスを "read only"から "none"に変更します
の実行権限を削除します
gvfsd-mtp
gvfs-mtp-volume-monitor(安全側)
gvfsd-gphoto2
gvfs-gphoto2-volume-monitor(安全側)
gvfsd-afpの実行許可を削除してください
gvfs-afc-volume-monitor(安全側)
一部のAndroidモバイルは大容量ストレージモードを使用してそこにマウントできます。SDカードは/ media/userのフォルダーのアクセス許可を400に変更します
user- ubuntuで作成されたユーザー。
chmod 400
または、ユーザーのマウント許可を削除します。
これは、Ubuntu 14.04でテストされたUnityとGnomeの両方で機能するはずです。
新しいグループを追加します
addgroup myusbaccessgroup
Gvfsモニターの所有者グループを変更する
chown root:myusbaccessgroup /usr/lib/gvfs/gvfs-*-monitor
パブリック/その他の読み取りと実行の許可を削除します
chmod 750 /usr/lib/gvfs/gvfs-*-monitor
User1をグループに入れてuser2を残すか、グループから削除します
adduser user1 myusbaccessgroup
deluser user2 myusbaccessgroup
ログアウト