Je travaille sur la conversion d'une installation Ubuntu (14.04 LTS) en un système de type kiosque avec stockage USB désactivé. Toutefois, cela n'empêche pas un utilisateur de monter un périphérique MTP tel qu'un téléphone Android.
Ce problème est différent de empêchant le montage automatique des périphériques MTP, ce qui a été résolu dans d'autres questions sur AskUbuntu.
-
edit: Je dois ajouter que j'ai supprimé le stockage USB en révoquant les droits d'accès du groupe en question en chown'ing/media à admin: myusbaccessgroup. Évidemment, les utilisateurs/groupes que je veux empêcher d’utiliser la clé USB ne sont pas dans myusbaccessgroup.
-
Mise à jour:
Une prime a été mise pour cette réponse, mais aucune solution efficace n'a été trouvée. S'il vous plaît voir les réponses avant suivi de la discussion en salle de discussion .
Abandonnant, j’ai installé Ubuntu 12.04 à la place, car il n’a pas de support pour MTP prêt à l’emploi. Cependant, les périphériques PTP sont toujours montés.
Je ne pouvais pas le faire fonctionner en utilisant les permissions utilisateur/groupe. Je ne sais pas non plus comment libmtp monte les volumes de téléphones.
C'est une solution pour vérifier le groupe d'utilisateurs du côté udev
.
Basculer vers la racine
Sudo -i
Créer un script générique pour vérifier l'utilisateur graphique et s'il fait partie du groupe spécifié
nano /lib/udev/check_gui_user_group.sh
Ajoutez-y cette ligne:
#!/bin/bash
export GUI_$(grep -z USER /proc/$(pgrep -nx $1)/environ)
groups $GUI_USER | grep -qFw "$2"
Ajouter une autorisation d'exécution
chmod +x /lib/udev/check_gui_user_group.sh
Périphériques MTP: Laissez les règles libmtp remplacées dans /lib/udev/rules.d/
.
cp /lib/udev/rules.d/69-libmtp.rules /etc/udev/rules.d/69-libmtp.rules
Puis ouvrez-le pour l'édition:
nano /etc/udev/rules.d/69-libmtp.rules
Ajoutez cette ligne juste après LABEL="libmtp_usb_rules"
:
PROGRAM!="check_gui_user_group.sh gnome-session myusbaccessgroup", GOTO="libmtp_rules_end"
Pour Ubuntu 14.04 Unity & Gnome, vous pouvez utiliser gnome-session
. Pour les autres bureaux, utilisez pstree -u
ou ps aux | grep -i session
Signification de la règle: Chaque fois que l'utilisateur de gnome-session
ne figure PAS dans le groupe myusbaccessgroup
, ignore toutes les règles libmtp.
Périphériques PTP: Ajouter un autre fichier de règles
nano /etc/udev/rules.d/99-usb-storage-remove.rules
Ajouter une règle
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'"
Autres périphériques de stockage USB: Ajoutez cette règle au fichier de règles de l'étape précédente.
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'"
Pour savoir d'où je tire la liste des pilotes, essayez ceci:
ls /lib/modules/$(uname -r)/kernel/drivers/usb/storage/
Recharger les règles
udevadm control -R
Rebranchez votre téléphone.
Tests et dépannage:
Configurez le groupe, si ce n'est déjà fait
addgroup myusbaccessgroup
Supprimer l'utilisateur du groupe.
deluser user myusbaccessgroup
Exécuter udev monitor
udevadm monitor -u
Rebranchez ce périphérique
Vérifiez ce qui a été exécuté
udevadm test /sys/device/...
Ajouter un utilisateur au groupe
adduser user myusbaccessgroup
Refaire à partir de l'étape 3.
Notes:
J'ai utilisé Kubuntu 15.04 (machine réelle) et Ubuntu 14.04 (nouvelle installation dans VirtualBox) pour les tests.
Références:
man udev
cherche PROGRAM
utilise.J'ai eu la même exigence de mon côté.
Le meilleur moyen de bloquer MTP, PTP pour Android consiste à désactiver le service dans Ubuntu.
Entrez cet emplacement en tant que root/usr/lib/gvfs
"Sudo nautilus" sera facile si vous avez tendance à utiliser l'interface graphique
"Sudo nautilus" et le n naviguer vers l’ordinateur/usr/lib/gvfs
Il y aura une liste de services Supprimer l'autorisation d'exécuter en cliquant avec le bouton droit de la souris sur le service approprié -> propriétés -> autorisation -> décocher "exécuter" et changer l'accès en lecture seule de "en lecture seule" à "aucun"
Supprimer l'autorisation d'exécution pour
gvfsd-mtp
gvfs-mtp-volume-monitor (pour un côté plus sûr)
gvfsd-gphoto2
gvfs-gphoto2-volume-monitor (pour un côté plus sûr)
si gentiment Supprimer l'autorisation d'exécution pour gvfsd-afp
gvfs-afc-volume-monitor (pour un côté plus sûr)
certains mobiles Android peuvent utiliser le mode de stockage de masse pour y monter une carte SD. Modifiez l'autorisation de dossier dans/media/user à 400
utilisateur: l'utilisateur créé dans Ubuntu.
chmod 400
ou supprimer l'autorisation de montage pour l'utilisateur ..
Cela devrait fonctionner à la fois pour Unity et Gnome, testé dans Ubuntu 14.04.
Ajouter le nouveau groupe
addgroup myusbaccessgroup
Changer le groupe de propriétaires des moniteurs gvfs
chown root:myusbaccessgroup /usr/lib/gvfs/gvfs-*-monitor
Supprimer la permission de lire et d'exécuter pour le public/autres
chmod 750 /usr/lib/gvfs/gvfs-*-monitor
Mettez l'utilisateur1 dans le groupe et laissez l'utilisateur2 absent ou supprimez-le du groupe
adduser user1 myusbaccessgroup
deluser user2 myusbaccessgroup
Se déconnecter