Quando o kernel do Linux detecta um novo dispositivo, ele envia uma mensagem para udev . O trabalho do udev é tornar o novo dispositivo acessível ao usuário. Para muitos dispositivos, tudo o que o udev precisa fazer é criar entradas em /dev
. Para dispositivos de bloco, isso permite que o dispositivo seja montado. Para dispositivos de caracteres, como portas seriais e portas de som, isso permite que aplicativos dedicados usem o dispositivo. Para interfaces de rede, o udev pode definir um nome. Para teclados, o udev também pode definir scancodes adicionais. Se o udev não cria uma entrada de dispositivo, isso efetivamente faz com que o dispositivo não seja usado.
O Udev pode ser controlado pelas regras ; regras padrão estão presentes em /lib/udev/udev.d
e elas podem ser substituídas pelo administrador por meio de arquivos em /etc/udev/udev.d
. Cada regra do udev tem condições no formato VARIABLE==VALUE
; a regra se aplica se todas essas regras forem atendidas. Você pode ver as condições que se aplicam a um dispositivo executando udevadm info -a -n /dev/…
ou udevadm info -a /sys/…
.
Até onde eu sei, não há mecanismo genérico para ignorar um dispositivo. Se não for uma interface de rede (que não usa um nó de dispositivo em /dev
), você pode torná-lo efetivamente inutilizável, não dando permissões:
CONDITIONS, MODE="000"
Os dispositivos USB têm um mecanismo de autorização : se o atributo authorized
estiver definido como 0 (false), o sistema não acessará o dispositivo. Com esta regra, nenhum dispositivo USB estará disponível além de dispositivos de armazenamento USB.
ACTION=="add", SUSYSTEMS=="usb", DRIVERS!="usb-storage", ATTR{authorized}="0"
Também é possível desativar dispositivos USB após a sequência de inicialização desabilitando todas as portas do host USB com este snippet em /etc/rc.local
:
for x in /sys/bus/usb/devices/usb*; do
echo 0 >"$x/authorized_default"
done
Dispositivos individuais podem ser ativados por meio de uma regra do udev (ou manualmente) que define o atributo authorized
como 1.
Se você quiser tornar um dispositivo de armazenamento somente leitura, defina seu atributo ro
como 1.
Se você deseja executar um comando, use a chave RUN
em uma regra do udev (observe que você precisa do caminho completo para o comando e veja o manual para as seqüências de escape disponíveis e variáveis de ambiente). Se você quiser que o comando acesse a GUI, consulte
Abrir um janela em um display X remoto (por que "Não é possível abrir a tela")?