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.
-
Mudar para a raiz
sudo -i
-
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
-
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 usandopstree -u
oups aux | grep -i session
O significado da regra: Sempre que o usuário de
gnome-session
NÃO estiver no grupomyusbaccessgroup
, ignore todas as regras libmtp. -
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'"
-
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/
-
Recarregue as regras
udevadm control -R
-
Substitua seu telefone.
Teste & amp; Solução de problemas:
-
Configure o grupo, se ainda não estiver pronto
addgroup myusbaccessgroup
-
Remover usuário do grupo.
deluser user myusbaccessgroup
-
Execute o monitor do udev
udevadm monitor -u
-
Substitua esse dispositivo
-
Verifique o que foi executado
udevadm test /sys/device/...
-
Adicionar usuário ao grupo
adduser user myusbaccessgroup
-
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:
-
man udev
procuraPROGRAM
usa. - Como pausar a reprodução VLC quando os fones de ouvido estão desconectados? , bom truque por Stunts para importar variáveis de ambiente atuais.