Restringindo que dispositivos MTP sejam montados por um usuário / grupo

4

Estou trabalhando na conversão de uma instalação do Ubuntu (14.04 LTS) em um sistema semelhante a um quiosque com armazenamento USB desativado. No entanto, isso não impede que um usuário monte um dispositivo MTP, como um telefone Android.

Esse problema não é o mesmo que impedindo a montagem automática do MTP dispositivos, o que foi resolvido em outras perguntas no AskUbuntu.

  1. Desejo permanentemente impedir que o MTP e outros dispositivos de armazenamento sejam montados por um usuário ou grupo específico. (Talvez desabilitando o mtpfs / gvfs?)
  2. Quais outros meios de conectar dispositivos de armazenamento graváveis que eu deveria cuidar (como o UMTS)?

-

edit: Devo acrescentar que eu desativei o armazenamento USB revogando os direitos de acesso para o grupo em questão por chown'ing / media para admin: myusbaccessgroup. Obviamente, os usuários / grupos que eu quero impedir de usar o USB não estão em myusbaccessgroup.

-

Atualização:

Uma recompensa foi dada por essa resposta, mas nenhuma solução bem-sucedida foi encontrada. Por favor, veja as respostas antes, seguidas da discussão na sala de bate-papo .

Desistindo, instalei o Ubuntu 12.04, já que ele não tem suporte para o MTP pronto para uso. No entanto, os dispositivos PTP ainda são montados.

    
por Akshay Rao 12.09.2015 / 13:07

3 respostas

3

Eu não consegui fazê-lo funcionar usando permissões de usuário / grupo, nem sei como os volumes dos telefones de montagem libmtp.

Esta é uma solução para verificar o grupo de usuários de udev side.

  1. Mudar para a raiz

    sudo -i
    
  2. Crie um script genérico para verificar o usuário da GUI e se ele estiver no grupo especificado

    nano /lib/udev/check_gui_user_group.sh
    

    Adicione esta linha a ela:

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

    Adicione permissão de execução

    chmod +x /lib/udev/check_gui_user_group.sh
    
  3. Dispositivos MTP: deixe substituir as regras da libmtp em /lib/udev/rules.d/ .

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

    Depois, abra-o para edição:

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

    Adicione esta linha logo após LABEL="libmtp_usb_rules" :

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

    Para o Ubuntu 14.04 Unity & amp; Gnome, você pode usar gnome-session . Para outros desktops, verifique usando pstree -u ou ps aux | grep -i session

    O significado da regra: Sempre que o usuário de gnome-session NÃO estiver no grupo myusbaccessgroup , ignore todas as regras libmtp.

  4. Dispositivos PTP: Adicionar outro arquivo de regras

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

    Adicione regra

    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. Outros dispositivos de armazenamento USB: adicione esta regra ao arquivo de regras da etapa anterior.

    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'"
    

    Para saber de onde obtenho a lista de drivers, tente isto:

    ls /lib/modules/$(uname -r)/kernel/drivers/usb/storage/
    
  6. Recarregue as regras

    udevadm control -R
    
  7. Substitua seu telefone.

Teste & amp; Solução de problemas:

  1. Configure o grupo, se ainda não estiver pronto

    addgroup myusbaccessgroup
    
  2. Remover usuário do grupo.

    deluser user myusbaccessgroup
    
  3. Execute o monitor do udev

    udevadm monitor -u
    
  4. Substitua esse dispositivo

  5. Verifique o que foi executado

    udevadm test /sys/device/...
    
  6. Adicionar usuário ao grupo

    adduser user myusbaccessgroup
    
  7. Refaça a partir do passo 3.

Notas:

Eu usei o Kubuntu 15.04 (máquina real) e o Ubuntu 14.04 (nova instalação no VirtualBox) para testes.

  • usei o Wiko Bloom (Android 4.4.2) para testar o modo MTP, que funciona bem em ambos os sistemas.
  • Eu não pude testar o modo PTP porque não foi montado automaticamente. Talvez esteja faltando alguma coisa aqui.
  • Outros armazenamentos externos: um disco flash & amp; um disco rígido externo. Teste passa para ambos os sistemas.

Referências:

por user.dz 16.09.2015 / 15:39
3

Eu tive o mesmo requisito no meu fim.

Melhor maneira de bloquear o MTP, PTP para android é desabilitar o serviço no Ubuntu.

Digite este local como root / usr / lib / gvfs

"sudo nautilus" será fácil se você usar a GUI

"sudo nautilus" e o n navegam para o computador / usr / lib / gvfs

Haverá lista de serviços Remova a permissão de execução clicando com o botão direito do mouse no serviço adequado - > propriedades - > permissão - > desmarque "executar" e altere o acesso somente leitura de "somente leitura" para "nenhum"

Bloqueio de MTP e PTP

Remova a permissão de execução para

gvfsd-mtp

gvfs-mtp-volume-monitor (para um lado mais seguro)

gvfsd-gphoto2

gvfs-gphoto2-volume-monitor (para um lado mais seguro)

O telefone Apple I pode ser montado por meio do afp

tão gentilmente Remova a permissão de execução para gvfsd-afp

gvfs-afc-volume-monitor (para um lado mais seguro)

alguns celulares Android podem usar o modo de armazenamento em massa para montar o cartão SD altere a permissão da pasta em / media / user para 400

usuário - o usuário criado no Ubuntu.

chmod 400

ou remova a permissão de montagem para o usuário.

    
por TD_Krish 26.04.2016 / 13:56
0

Isso deve funcionar para Unity & amp; Gnome, testado no Ubuntu 14.04.

  1. Adicione o novo grupo

    addgroup myusbaccessgroup
    
  2. Altere o grupo de proprietários dos monitores gvfs

    chown root:myusbaccessgroup /usr/lib/gvfs/gvfs-*-monitor
    
  3. Remover permissão para ler & amp; executar para público / outros

    chmod 750 /usr/lib/gvfs/gvfs-*-monitor
    
  4. Coloque user1 no grupo & amp; deixe user2 fora ou remova-o do grupo

    adduser user1 myusbaccessgroup
    deluser user2 myusbaccessgroup
    
  5. Logout

por user.dz 18.09.2015 / 17:28