У меня есть ошибка, когда права доступа /dev/input/event*
неверны, поэтому, когда я использую Mumble , приложение не может обнаружить нажатия клавиш. Если я запускаю следующую команду, это «исправляет» проблему, но я бы хотел исправить ее навсегда.
sudo chmod a+r /dev/input/event/*
От чего зависят разрешения /dev/input/event*
и как их постоянно устанавливать?
permissions
попей
источник
источник
/dev/input/event/*
вы, по сути, предоставляете всем доступ к прослушиванию клавиатуры, например, к набираемым вами паролям. В однопользовательской системе это может не иметь большого значения, но даже в однопользовательской системе мы обычно используем системных пользователей в качестве дополнительного уровня безопасности в случае взлома какого-либо компонента и, например, предоставляяnobody
пользователю доступ к вашей клавиатуре. На входном потоке вы ослабляете эту защиту. Хотя это может «исправить» Mumble, это не является общим решением вашей проблемы. Должен быть лучший способ./dev/input
них неправильные, и каковы права собственности и разрешения (возможно, с выводомls -l
)? Проблема в том, что уinput
группы нет прав на чтение (или она не является владельцем группы)? В моей системе файлы событий имеютroot:input
право собственности, и как пользователь, так и владелец группы могут читать из них. Если у вас этого нет, возможно, вам следует попытаться настроить это таким образом, чтобы не позволить всем прочитать их. Если вы делаете у этого может быть достаточно для Mumble , чтобы работать с полномочиямиinput
группы.Ответы:
Более гибкий способ управления разрешениями на файлы - это использование ACL .
Если вам действительно нужно сделать это постоянным, то вы можете использовать правила udev, которые устанавливают его для вашего устройства ввода событий
добавьте файл /etc/udev/rules.d/99-userdev-input.rules с:
Вы можете проверить разрешение ACL с
источник
Я не знаю, что изначально устанавливает разрешения для символьных устройств / dev / input / event *
но я знаю, что вы можете изменить эти разрешения с помощью программного обеспечения, которое установлено в вашей системе по умолчанию как часть coreutils. см команды
man mknod
.Права доступа к моим устройствам событий:
Вот несколько примеров использования:
если вам нужна дополнительная информация для определения старших и младших номеров, посмотрите здесь
Теперь вы говорите, что разрешения неверны. Итак, что-то должно быть неправильно их настроено, и эта вещь должна запускаться с правами root. mknod может быть использован для создания устройства, но mkdev также может. Возможно, вы захотите взглянуть на разрешения любых действий по умолчанию для mkdev и mknod.
Как в моих примерах: / dev / input / event0 имеет разрешения crw-rw, но разрешения по умолчанию для lolwat были установлены на crw-r - r--
У меня есть некоторая неуверенность, диктует ли тип устройства оригинальные разрешения. Вы можете поэкспериментировать с этим, чтобы узнать.
Вот еще одна ссылка для получения дополнительной информации о mknod
источник
По сути, вам нужно добавить файл в
/etc/udev/rules.d/
(вы можете назвать его как-то так75-input-events.conf
)И добавьте строки
KERNEL=="eventX" , SUBSYSTEM=="input", MODE="0777"
для каждого события в этот файл, где х это число. Например, у меня есть события от 0 до 9, так что я лично сделал бы для каждого из них. Последний ответ на эту тему предполагает, что вы могли бы добавитьKERNEL==event*
(то есть, с подстановочным знаком), тоже.источник
Я предлагаю вам установить приложение input-utils
Это набор утилит, которые полезны при работе со входным слоем ядра Linux (версия 2.6 и новее). Включены утилиты для вывода списка устройств ввода, известных ядру, отображения событий ввода, полученных устройством, а также запроса или изменения раскладок клавиатуры.
Интересующая команда:
Он выводит все устройства ввода и связанные сведения об устройстве.
Наблюдать за входными событиями можно с помощью команды, указав номер N-го устройства:
Затем можно вывести раскладку клавиатуры конкретного устройства события с помощью команды, указав номер N-го устройства:
С помощью этих инструментов можно отладить систему, чтобы увидеть, генерируют ли входные данные ожидаемые коды событий, и, следовательно, помочь разобраться с такими проблемами, как то, почему ключи не работают или отображаются неправильно.
Udev - менеджер устройств для ядра Linux. Он управляет узлами устройств в / dev и обрабатывает все действия в пользовательском пространстве при добавлении или удалении устройств.
Evdev - это общий интерфейс событий ввода в ядре Linux. Он обобщает необработанные события ввода от драйверов устройств и делает их доступными через символьные устройства в
/dev/input/
каталоге.Каждый раз, когда происходит изменение в структуре устройства, ядро испускает событие, которое получает udev. Затем udev следует правилам, указанным в каталогах /etc/udev/rules.d, /run/udev/rules.d и /lib/udev/rules.d.
На основе информации, содержащейся в событии, он находит правило или правила, которые ему необходимо вызвать, и выполняет необходимые действия.
Эти действия могут создавать или удалять файлы устройства, но также могут инициировать загрузку определенных файлов прошивки в память ядра.
источник
В терминале запустить:
Перейдите к строке с надписью «exit 0» и введите строку над ней:
Нажмите Ctrl + x, чтобы выйти. Он спросит вас, хотите ли вы сохранить. Хит у. Он спросит вас, что сохранить как. Просто нажмите Enter.
Теперь эта команда должна запускаться при каждой загрузке и, таким образом, давать вам разрешения для этой папки. Файл /etc/rc.local автоматически имеет права суперпользователя, поэтому вам не нужно вводить пароль для этого.
источник