Разрешить одному процессу доступ к /dev/uninput без ущерба для безопасности

Steam In-Home-Streaming был возвращен на другой день. Это позволяет вам играть в игры, воспроизводимые на одном компьютере, на другом компьютере (обычно это игры на ТВ /Media Center, которые воспроизводятся на большом шумном рабочем столе в другой комнате). Это все прекрасно работает, за исключением ввода.

Steam читает входные данные на клиенте и отправляет их на удаленный экземпляр Steam. Довольно простые вещи, за исключением того, что для того, чтобы прочитать необработанный ввод и вставить его на другом конце, оба экземпляра Steam должны иметь доступ на чтение / запись к/dev/uninput:

Чтобы поддерживать потоковые игровые контроллеры на главном компьютере Linux, Steam должен читать и записывать / dev / uinput или / dev / input / uinput.

Это оставляет меня в некотором затруднении. Должен ли я:

  • sudo chmod o+rw /dev/uninput разрешить что-либо читать / писать?
  • sudo setfacl -m u:$USER:rw /dev/input разрешить только моему пользователю читать / писать?
  • Что-то еще, о чем я не знаю?

Даже ACL кажется ненужной угрозой безопасности (например, любой процесс под моим пользователем может перехватить ввод пароля). Есть ли какие-либо способы, позволяющие только одному приложению (например, ядру "Capability"/FSCAP) взаимодействовать с uinput?

1 ответ

УБЕДИТЕСЬ, прочитайте ОБНОВЛЕНИЕ внизу этого ответа

Вы правы. Это причина, по которой он указан как Известная проблема. Я предполагаю, что они найдут путь рано или поздно.

Это не безопасно, но работает (пока не будет исправлено). Создайте файл /etc/udev/rules.d/99-steam-controller.rules со следующим содержимым:

# 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"

Затем добавьте пользователя, которого вы используете для запуска steam, в группу "games"

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

Источник: https://github.com/ynsta/steamcontroller


ОБНОВИТЬ

Это было добавлено в список известных проблем. Убедитесь, что вы используете правило udev с официального сайта: https://steamcommunity.com/app/353370/discussions/0/490123197956024380/

Там есть инструкции о том, как исправить вашу проблему, и правила обновляются время от времени, когда Valve добавляет поддержку новых контроллеров.

Другие вопросы по тегам