Permitir que um processo acesse / dev / uninput sem comprometer completamente a segurança

1

O Steam In-Home-Streaming foi ativado novamente no outro dia. Isso permite que você jogue jogos sendo renderizados em um computador em outro computador (geralmente jogando jogos em uma TV / Media Center que estão sendo renderizados em uma grande área de trabalho barulhenta em outra sala). Tudo funciona muito bem, exceto pela entrada.

O Steam lê a entrada no cliente e a envia para a instância remota do Steam. Coisas bastante simples, exceto que para ler a entrada bruta e injetá-la na outra ponta, ambas as instâncias do Steam precisa de acesso de leitura / gravação para /dev/uninput :

In order to support streaming game controllers on a Linux host computer, /dev/uinput or /dev/input/uinput needs to be readable and writable by Steam.

Isso me deixa em um dilema. Eu:

  • sudo chmod o+rw /dev/uninput para permitir que qualquer coisa leia / escreva?
  • sudo setfacl -m u:$USER:rw /dev/input para permitir que apenas meu usuário leia / escreva?
  • Algo mais que eu desconheço?

Mesmo a ACL parece ser um risco de segurança desnecessário (qualquer processo sob meu usuário poderia, por exemplo) detectar a entrada de senha. Há alguma maneira de permitir que apenas um aplicativo (como um Kernel "Capability" / FSCAP) interaja com o uinput?

    
por Oli 05.09.2014 / 16:12

1 resposta

0

OBSOLETO, leia a UPDATE na parte inferior desta resposta

Você está certo. Esse é o motivo pelo qual ele está listado como um problema conhecido. Eu suponho que eles encontrarão um caminho mais cedo ou mais tarde.

Isso não é seguro, mas funciona (até que haja uma correção adequada). Crie um arquivo /etc/udev/rules.d/99-steam-controller.rules com o seguinte conteúdo:

# replace game group by a valid group on your system
# Steam controller keyboard/mouse mode
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", GROUP="games", MODE="0660"

# Steam controller gamepad mode
KERNEL=="uinput", MODE="0660", GROUP="games", OPTIONS+="static_node=uinput"

Em seguida, adicione o usuário que você usa para iniciar o vapor no grupo "games"

sudo usermod -a -G games <YourUsername>
#Restart udev service
sudo udevadm control --reload

Fonte: link

UPDATE

Isso foi adicionado à lista de problemas conhecidos. Certifique-se de estar usando a regra do udev no site oficial: link

Existem instruções sobre como corrigir o problema, e as regras são atualizadas de vez em quando, quando a Valve adiciona suporte a novos controladores.

    
por Emilio M. 26.10.2016 / 15:39