Позвольте некорневому пользователю чтению-записи/dev файлы

Как человек, у которого есть старые очень недостаточно мощные машины, у меня есть несколько предложений. Я думаю, что первое беспокойство - хотите ли Вы остаться в области Linux, в этом случае я, вероятно, рекомендовал бы Slackware. Хотя Это ДЕЙСТВИТЕЛЬНО имеет графическую среду, это не загружается в него автоматически. Можно остаться в командной строке без проблемы и все же более или менее иметь знание, которое будет относительно легко перевести в другие машины Linux, поскольку требование возникает. Альтернативой, которую я предпочитаю, является Freebsd, абсолютно надежная и мощная альтернатива. Проблема с ним состоит в том, что часть номенклатуры несколько характерна для UNIX, как отклонено сферы Linux. (Разделы диска, имена устройств и разделение несколько от помещения. Программное обеспечение будет установлено в безопасном, но UNIX определенные местоположения.)

Я не думаю, что Вы будете разочарованы любой альтернативой.

8
30.01.2014, 05:35
2 ответа

Как структурированы правила udev

Для устройств, попадающих в подсистему tty, можно установить их группу следующим образом:

SUBSYSTEM=="tty", GROUP="dialout"

Обратите внимание что, точно так же, как в общем программировании, == тест для равенства в то время как = присвоение. Так, вышеупомянутый оператор переводит в "если SUBSYSTEM=="tty" затем присвойтесь GROUP="dialout". Оператор может иметь несколько тестов, которые являются и-редактором вместе и несколькими присвоениями.

Если Вы хотели изменить read-write-execute полномочия, затем присвоить РЕЖИМ вместо ГРУППЫ, где РЕЖИМ следует за обычным Unix восьмеричная нотация, например. MODE="0660" дает владельцу и полномочиям чтения-записи группы. man udev имеет все подробности.

Можно найти много примеров таких правил в /lib/udev/rules.d/91-permissions.rules

Как добавить, что udev управляет к Вашей системе

После того как Вы обосновались на том, чем Вы хотите свое правило быть, достаточно просто добавить его. В debian-полученной системе перейдите к каталогу /etc/udev/rules.d и создайте файл. Файлы выполняются в порядке сортировки. Так, чтобы заставить Ваши правила зарегистрировать последнее, которое будет считано, переопределяя более ранние, пробуют имя как 99-instruments.rules. Затем поместите свои правила в тот файл, один на строку. (Если потребность, строки могут быть расширены путем помещения обратной косой черты в конце строки, точно так же, как в оболочке.)

Так, если Вы хотите изменить группу и полномочия на tty устройствах, Вашем файле /etc/udev/rules.d/99-instruments.rules мог состоять из одной строки:

SUBSYSTEM=="tty", GROUP="dialout", MODE="0660"

Чтобы гарантировать, что Ваш новый файл сам имеет обычные полномочия:

sudo chown root:root /etc/udev/rules.d/99-instruments.rules
sudo chmod 0644 /etc/udev/rules.d/99-instruments.rules

После создания файла udevd может автоматически считать его. В противном случае можно вызвать его, перечитал его файлы с:

udevadm control --reload-rules

Больше о том, как udev классифицирует устройства

Если Вы хотите получить более прекрасный контроль, по которому устройства отвечают, о каких правилах, можно узнать больше, как udev видит устройства путем просматривания/sys/. В данный момент у меня нет доступа к машине с ttyUSB или HPIB, поэтому давайте сделаем пример диска sda. Выполненный:

udevadm info --attribute-walk --path=/sys/block/sda

Это дает большую информацию, которая похожа:

. . . .
KERNEL=="sda"
SUBSYSTEM=="block"
DRIVER==""
ATTR{range}=="16"
ATTR{ext_range}=="256"
ATTR{removable}=="0"
. . . .

Эти строки - все в форме, подходящей для использования как if пункты в правилах. Так, например, для изменения владения на всех блочных устройствах, которые отмечены как несъемные мы использовали бы правило:

SUBSYSTEM=="block", ATTR{removable}=="0", OWNER=john1024

С информацией от udevadm, можно разработать правила, которые могут предназначаться конкретно для устройств интереса.

11
27.01.2020, 20:10
  • 1
    Первый пример должен иметь запятую, не период, перед РЕЖИМОМ = –  Jim Hunziker 19.01.2018, 20:03
  • 2
    @JimHunziker спасибо за это. Опечатка теперь исправлена. –  John1024 19.01.2018, 20:32

Я думаю, что предложил бы делать правило немного более строгим, чем John's. Например, создайте файл такой как /etc/udev/rules.d/99-tty-dialout.rules:

SUBSYSTEM=="tty", KERNEL=="ttyUSB0", GROUP="dialout", MODE="0660"

Можно использовать udevadm определить устройства SUBSYSTEM== и KERNEL== значения. Например:

$ udevadm info -a -n /dev/tty0

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/virtual/tty/tty0':
    KERNEL=="tty0"
    SUBSYSTEM=="tty"
    DRIVER==""
    ATTR{active}=="tty1"
4
27.01.2020, 20:10

Теги

Похожие вопросы