Разрешить одному процессу доступ к /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 добавляет поддержку новых контроллеров.