O que determina as permissões em / dev?

11

Eu tenho um bug onde as permissões em /dev/input/event* estão erradas, então quando eu uso Mumble , o aplicativo não consegue detectar pressionamentos de teclas. Se eu executar o seguinte comando, ele "corrigirá" o problema, mas eu gostaria de uma correção permanente.

sudo chmod a+r /dev/input/event/*

O que determina as permissões em /dev/input/event* e como defini-las permanentemente?

    
por popey 11.04.2015 / 11:51

5 respostas

3

Uma maneira mais flexível de gerenciar a permissão em arquivos é usar ACL .

sudo setfacl -m u:popey:rw /dev/input/eventx

Se você realmente precisa torná-lo permanente, use as regras do udev que o definem para o dispositivo de entrada de eventos

adicione um arquivo /etc/udev/rules.d/99-userdev-input.rules com:

KERNEL=="event*", SUBSYSTEM=="input", RUN+="/usr/bin/setfacl -m u:popey:rw $env{DEVNAME}"

você pode verificar a permissão das ACLs com

getfacl /dev/input/event*
    
por solsTiCe 15.04.2015 / 19:31
2

Eu não sei o que inicialmente define as permissões dos dispositivos de caracteres / dev / input / event *

mas, eu sei que você pode alterar essas permissões com um software que está no seu sistema por padrão como parte do coreutils. veja o comando man mknod .

As permissões dos meus dispositivos de evento são:

  

crw-rw ---- 1 entrada raiz 13, 64 14 de abril 14h39 / dev / entrada / evento0

aqui estão alguns exemplos de uso:

~$ sudo mknod lolwat c 4 64 
~$ sudo mknod lolwatnow c 4 64  -m 777
~$ ls -l lolwat*
crw-r--r-- 1 root root 4, 64 Apr 14 08:07 lolwat
crwxrwxrwx 1 root root 4, 64 Apr 14 08:08 lolwatnow

Se precisar de mais informações sobre como decidir sobre números maiores e menores, procure aqui

Agora, você diz que as permissões estão erradas. Então, algo deve estar errando, e essa coisa deve ser executada como root. O mknod poderia ser usado para criar um dispositivo, mas o mkdev também poderia. você pode querer olhar para as permissões de quaisquer ações padrão do mkdev e do mknod.

Como em meus exemplos: / dev / input / event0 tem permissões crw-rw, mas as permissões padrão, de lolwat foram definidas como crw-r - r -

Eu tenho alguma incerteza, se tipo de dispositivo dita as permissões originais.Você pode experimentar isso para descobrir.

Aqui está outro link para mais informações sobre o mknod

    
por j0h 14.04.2015 / 14:23
1

Basicamente, você precisa adicionar um arquivo em /etc/udev/rules.d/ (você pode nomear algo como 75-input-events.conf )

E adicione linhas KERNEL=="eventX" , SUBSYSTEM=="input", MODE="0777" para cada evento nesse arquivo, onde x é o número. Por exemplo, eu tenho eventos de 0 a 9, então eu pessoalmente faria por cada um deles. A última resposta em este tópico sugere que você poderia ter adicionado KERNEL==event* (ou seja, com curinga) também .

    
por Sergiy Kolodyazhnyy 14.04.2015 / 01:14
0

Minha sugestão é que você instale o aplicativo input-utils

sudo -i
apt-get update
apt-get install input-utils

Esta é uma coleção de utilitários que são úteis ao trabalhar com a camada de entrada do kernel do Linux (versão 2.6 e posterior). Incluído são utilitários para listar os dispositivos de entrada conhecidos para o kernel, mostrar os eventos de entrada que são recebidos por um dispositivo e consulta ou modifica mapas de teclado.

O comando de interesse é:

sudo -i 
lsinput

Ele despeja todos os dispositivos de entrada e os detalhes associados sobre o dispositivo.

Pode-se observar eventos de entrada usando o comando, especificando o enésimo número do dispositivo:

sudo -i
input-events <device number>

Pode-se então descarregar o mapeamento do teclado de um determinado dispositivo de evento usando o comando, especificando o número do dispositivo Nth:

sudo -i
input-kyb <device number>

Com essas ferramentas, é possível depurar um sistema para ver se as entradas geram os códigos de eventos esperados e, portanto, ajudam a resolver questões como por que as chaves não funcionam ou são mapeadas incorretamente.

O udev é o gerenciador de dispositivos para o kernel do Linux. Ele gerencia nós de dispositivos em / dev e manipula todas as ações de espaço do usuário ao adicionar ou remover dispositivos.

O Evdev é uma interface genérica de eventos de entrada no kernel do Linux. Ele generaliza eventos de entrada brutos de drivers de dispositivos e os disponibiliza por meio de dispositivos de caracteres no diretório /dev/input/ .

Toda vez que uma mudança acontece dentro da estrutura do dispositivo, o kernel emite um evento que é escolhido pelo udev. O udev segue as regras conforme declarado nos diretórios /etc/udev/rules.d, /run/udev/rules.d e /lib/udev/rules.d.

Com base nas informações contidas no uevent, ele encontra a regra ou as regras necessárias para acionar e executar as ações necessárias.

Essas ações podem criar ou excluir arquivos de dispositivos, mas também podem acionar o carregamento de determinados arquivos de firmware na memória do kernel.

    
por kyodake 14.04.2015 / 02:10
0

Em uma execução de terminal:

  

sudo nano -b /etc/rc.local

Desça até a linha que diz "exit 0" e, em uma linha acima, digite:

  

sudo chmod a + r / dev / entrada / evento

Pressione Ctrl + x para sair disso. Ele perguntará se você deseja salvar. Aperte y. Ele vai perguntar o que salvar como. Basta apertar Enter.

Agora, esse comando deve iniciar a cada inicialização e, assim, conceder permissões a essa pasta. O arquivo /etc/rc.local tem privilégios de root automaticamente, assim você não precisará digitar uma senha para fazer isso.

    
por Colonel Trogdor 14.04.2015 / 01:41