web-dev-qa-db-fra.com

Restreindre le montage de périphériques MTP par un utilisateur / groupe

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.

  1. Je souhaite interdire de manière permanente le montage de MTP et d'autres périphériques de stockage par un utilisateur ou un groupe particulier. (Peut-être en désactivant mtpfs/gvfs?)
  2. Quels autres moyens de connecter des périphériques de stockage inscriptibles que je devrais prendre en charge (comme UMTS)?

-

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.

4
Akshay Rao

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.

  1. Basculer vers la racine

    Sudo -i
    
  2. 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
    
  3. 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.

  4. 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'"
    
  5. 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/
    
  6. Recharger les règles

    udevadm control -R
    
  7. Rebranchez votre téléphone.


Tests et dépannage:

  1. Configurez le groupe, si ce n'est déjà fait

    addgroup myusbaccessgroup
    
  2. Supprimer l'utilisateur du groupe.

    deluser user myusbaccessgroup
    
  3. Exécuter udev monitor

    udevadm monitor -u
    
  4. Rebranchez ce périphérique

  5. Vérifiez ce qui a été exécuté

    udevadm test /sys/device/...
    
  6. Ajouter un utilisateur au groupe

    adduser user myusbaccessgroup
    
  7. 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.

  • J'ai utilisé Wiko Bloom (Android 4.4.2) pour tester le mode MTP, qui fonctionne bien dans les deux systèmes.
  • Je n'ai pas pu tester le mode PTP car il n'était pas monté automatiquement. Peut-être qu'il me manque quelque chose ici.
  • Autres mémoires externes: un disque flash et un disque dur externe. Test réussi pour les deux systèmes.

Références:

3
user.dz

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"

Blocage du MTP et du PTP

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)


Apple je téléphone peut monter via afp

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 ..

3
TD_Krish

Cela devrait fonctionner à la fois pour Unity et Gnome, testé dans Ubuntu 14.04.

  1. Ajouter le nouveau groupe

    addgroup myusbaccessgroup
    
  2. Changer le groupe de propriétaires des moniteurs gvfs

    chown root:myusbaccessgroup /usr/lib/gvfs/gvfs-*-monitor
    
  3. Supprimer la permission de lire et d'exécuter pour le public/autres

    chmod 750 /usr/lib/gvfs/gvfs-*-monitor
    
  4. Mettez l'utilisateur1 dans le groupe et laissez l'utilisateur2 absent ou supprimez-le du groupe

    adduser user1 myusbaccessgroup
    deluser user2 myusbaccessgroup
    
  5. Se déconnecter

0
user.dz