onde é /lib/udev/rules.d [fechado]

0

Estou usando libusb para conectar um periférico e deseja permitir o acesso de usuários que não são root. Eu nem sei como isso deve funcionar, ou como não deve ser honesto, mas aparentemente eu posso modificar ou adicionar um arquivo ao /lib/udev/rules.d que permita que grupos de acesso sejam usados.

Olhando em primeiro lugar para uma solução rápida, e em segundo lugar para algum lugar que explique os dispositivos e o sistema de regras para que eu possa voltar depois e me educar. Algumas perguntas que não foram completamente respondidas por mim.

por Conrad B 28.09.2018 / 13:43

1 resposta

0

Primeiro, execute lsusb , depois conecte seu periférico USB e execute lsusb novamente. Compare as duas listagens: a segunda listagem deve ter pelo menos uma linha extra que descreva seu periférico.

Depois de identificar a linha correta, anote os números ID xxxx:yyyy nessa linha. Estes são o ID do fornecedor e o ID do produto para o dispositivo.

Mas primeiro, alguns princípios sobre os arquivos de regras do udev:

Você pode adicionar os arquivos de regra do udev que deseja /etc/udev/rules.d : o único requisito de nome é que o nome do arquivo tenha um sufixo .rules .

Os arquivos em /lib/udev/rules.d são reservados para as regras pré-empacotadas de sua distribuição Linux: qualquer alteração feita em qualquer arquivo existente será sobrescrita quando uma nova correção que afeta as regras do udev for instalada no sistema.

Se você precisar modificar as regras existentes, deverá copiar o arquivo de regra que deseja modificar de /lib/udev/rules.d para /etc/udev/rules.d , mantendo o nome original do arquivo. Todos os arquivos em /etc/udev/rules.d irão substituir arquivos com nomes idênticos em /lib/udev/rules.d . Depois de fazer a cópia, você pode modificar a cópia em /etc/udev/rules.d como desejar, com a certeza de que suas alterações não serão sobrescritas em algum momento futuro quando algumas atualizações de segurança forem instaladas.

Os arquivos de regras nos dois diretórios são lidos (depois de considerar as substituições) em uma ordem alfanumérica simples e, se houver regras conflitantes, o último ganha. Existe uma convenção de que o nome do arquivo de regras deve ser algo como NN-descriptive-name.rules , em que o NN identifica o local desse arquivo na ordenação geral das regras.

Em seguida, para a tarefa real de escrever a regra.

Se o ID do seu dispositivo na listagem lsusb fosse xxxx:yyyy , a parte da regra do udev que especifica o dispositivo seria:

SUBSYSTEM=="usb", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy"

Observe os sinais de igual duplo. A convenção é semelhante a C, Java e algumas outras linguagens de programação: um sinal de igualdade duplicado significa teste para igualdade, um único sinal de igual significa configuração algo para um valor particular. / p>

Na maioria das versões modernas do Linux, você pode usar TAG+="uaccess" no final da sua linha de regra para especificar que um determinado dispositivo deve ser acessado por quem estiver logado no sistema localmente.

Se você precisar que apenas alguns usuários consigam acessar o dispositivo, crie um grupo ( sudo groupadd mydevice ), adicione os usuários ao grupo ( usermod -a -G mydevice username ) e torne o dispositivo acessível por esse grupo apenas com GROUP="mydevice", MODE="0660" no final da sua linha de regra. Então as pessoas adicionadas ao grupo podem, por exemplo use ssh para se conectar ao sistema remotamente e ainda usar o dispositivo; as pessoas que não são membros do grupo não poderão usar o dispositivo.

Observação: as novas associações ao grupo entrarão em vigor no próximo login. Portanto, se você se adicionar ao novo grupo, será necessário fazer logout e fazer login novamente antes de testar o dispositivo.

Se você quiser permitir que todos no sistema acessem o dispositivo, basta especificar MODE="0666" no final da linha de regra. (Você deve pensar duas vezes antes de fazer isso.)

Juntando tudo

Portanto, se você não tiver uma necessidade particular de modificar qualquer arquivo de regra existente, basta criar o seu próprio, por exemplo, /etc/udev/rules.d/99-mydevice.rules .

sudo <your-favorite-text-editor> /etc/udev/rules.d/99-mydevice.rules

Se você quiser apenas permitir que o usuário conectado localmente use o dispositivo, o conteúdo do arquivo deve ser assim:

SUBSYSTEM=="usb", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", TAG+="uaccess"

Depois de salvar o arquivo de regras, execute este comando para que sua nova regra entre em vigor imediatamente:

udevadm control --reload-rules

Se você usou a solução baseada em grupo, efetue logout e login novamente neste momento.

    
por 28.09.2018 / 15:25