Что определяет права доступа в / dev?

10

У меня есть ошибка, когда разрешения на /dev/input/event* ошибочны, поэтому, когда я использую Mumble , приложение не может обнаружить нажатия клавиш. Если я запустил следующую команду, она «исправляет» проблему, но мне бы понадобилось постоянное исправление.

sudo chmod a+r /dev/input/event/*

Что определяет разрешения для /dev/input/event* и как я их постоянно устанавливаю?

    
задан popey 11.04.2015 в 09:51
источник

5 ответов

3

Более гибкий способ управления разрешением на файлы - использовать ACL .

sudo setfacl -m u:popey:rw /dev/input/eventx

Если вам действительно нужно сделать это постоянным, вы можете использовать правила udev, которые устанавливают его для устройства ввода событий

добавить файл /etc/udev/rules.d/99-userdev-input.rules с помощью

KERNEL=="event*", SUBSYSTEM=="input", RUN+="/usr/bin/setfacl -m u:popey:rw $env{DEVNAME}"

вы можете проверить разрешение ACL с помощью

getfacl /dev/input/event*
    
ответ дан solsTiCe 15.04.2015 в 17:31
2

Я не знаю, что изначально устанавливает разрешения персональных устройств / dev / input / event *

, но я знаю, что вы можете изменить эти разрешения с помощью программного обеспечения, которое по умолчанию используется в вашей системе как часть ядра. см. команду man mknod .

Разрешения моих устройств событий:

  

crw-rw ---- 1 вход root 13, 64 апреля 14 06:39 / dev / input / event0

Вот несколько примеров использования:

~$ sudo mknod lolwat c 4 64 
~$ sudo mknod lolwatnow c 4 64  -m 777
~$ ls -l lolwat*
crw-r--r-- 1 root root 4, 64 Apr 14 08:07 lolwat
crwxrwxrwx 1 root root 4, 64 Apr 14 08:08 lolwatnow

, если вам нужна дополнительная информация о выборе основных и второстепенных номеров, посмотрите здесь

Теперь вы говорите, что разрешения ошибочны. Поэтому что-то должно быть неправильным, и эта вещь должна выполняться как root. mknod можно использовать для создания устройства, но mkdev также может. вы можете захотеть просмотреть разрешения любых действий по умолчанию для mkdev и mknod.

Как и в моих примерах: / dev / input / event0 имеет разрешения crw-rw, но разрешения по умолчанию для lolwat были установлены на crw-r-r -

У меня есть некоторая неопределенность, зависит ли тип устройства от исходных разрешений. Вы можете поэкспериментировать с этим, чтобы узнать.

Вот еще одна ссылка для дополнительной информации о mknod

    
ответ дан j0h 14.04.2015 в 12:23
1

В принципе, вам нужно добавить файл в /etc/udev/rules.d/ (вы могли бы назвать его чем-то вроде 75-input-events.conf )

И добавьте строки KERNEL=="eventX" , SUBSYSTEM=="input", MODE="0777" для каждого события в этот файл, где x - это число. Например, у меня есть события с 0 по 9, поэтому я лично буду делать для каждого из них. Последний ответ на этот поток предполагает, что вы могли бы добавить KERNEL==event* (т. Е. С wild card), тоже .     

ответ дан Sergiy Kolodyazhnyy 13.04.2015 в 23:14
0

Мое предложение состоит в том, что вы устанавливаете приложение input-utils

sudo -i
apt-get update
apt-get install input-utils

Это набор утилит, которые полезны при работе с входной уровень ядра Linux (версия 2.6 и выше). включены являются утилитами для перечисления устройств ввода, известных ядру, показывают входные события, принимаемые устройством, а также запрос или изменение карты клавиатуры.

Интересующая команда:

sudo -i 
lsinput

Он выгружает все устройства ввода и связанные с ним сведения об устройстве.

Можно наблюдать входные события с помощью команды, указав номер N-го устройства:

sudo -i
input-events <device number>

Затем можно сбрасывать сопоставление клавиатуры для определенного устройства событий с помощью команды, указывая номер N-го устройства:

sudo -i
input-kyb <device number>

С помощью этих инструментов можно отладить систему, чтобы увидеть, генерируют ли входы ожидаемые коды событий и, следовательно, помогают устранять такие проблемы, как, почему ключи не работают или отображаются неправильно.

Udev - это диспетчер устройств для ядра Linux. Он управляет узлами устройства в / dev и обрабатывает все действия пользовательского пространства при добавлении или удалении устройств.

Evdev - это общий интерфейс входных событий в ядре Linux. Он обобщает исходные входные события из драйверов устройств и делает их доступными через символьные устройства в каталоге /dev/input/ .

Каждый раз, когда в структуре устройства происходит изменение, ядро ​​испускает uevent, который получает udev. udev затем следует правилам, указанным в каталогах /etc/udev/rules.d, /run/udev/rules.d и /lib/udev/rules.d.

Основываясь на информации, содержащейся в uevent, он находит правило или правила, необходимые для запуска и выполнения необходимых действий.

Эти действия могут создавать или удалять файлы устройств, но также могут запускать загрузку определенных файлов прошивки в память ядра.     

ответ дан kyodake 14.04.2015 в 00:10
0

В терминальном запуске:

  

sudo nano -b /etc/rc.local

Спуститесь к строке, которая говорит «exit 0», и в строке над ней введите:

  

sudo chmod a + r / dev / input / event

Нажмите Ctrl + x, чтобы выйти из этого. Он спросит вас, хотите ли вы сохранить. Хит y. Он спросит вас, что сохранить. Просто нажмите Enter.

Теперь эта команда должна запускаться при каждой загрузке и, таким образом, давать вам разрешения для этой папки. Файл /etc/rc.local автоматически имеет права root, поэтому вам не нужно вводить пароль для этого.

    
ответ дан Colonel Trogdor 13.04.2015 в 23:41