Isso foi perguntado originalmente no Stack Overflow , mas foi fechado por ser off-topic. Espero que este seja o fórum certo para a pergunta.
Estou escrevendo um driver de dispositivo de caractere que expõe atributos de classe e dispositivo sob sysfs. Estou usando udev para tornar os dispositivos que aparecem em /dev
leitura/gravação por um certo grupo, mas não consigo descobrir como tornar os atributos sysfs graváveis pelo mesmo grupo sem um script de shell.
$ ls -l /dev/foobar
crw-rw---- 1 root my_group 241, 0 Jan 4 21:57 /dev/foobar # ownership applied by udev
$ ls -l /sys/class/my_class/wo_attribute
--w--w---- 1 root root 4096 Jan 4 22:02 wo_attribute # still in root group :/
$ ls -l /sys/class/my_class/my_device/rw_attribute
-rw-rw-r-- 1 root root 4096 Jan 4 22:13 rw_attribute # ditto
Tentei usar udevadm info
para combinar as chaves KERNEL e SUBSYSTEM do caminho sysfs sem efeito. Também encontrei os campos udev_event
e de ; Não tive sorte com o primeiro e o último funciona para atributos de dispositivo, mas tenho que codificar o gid do , o que não é o ideal.get_ownership
struct class
my_group
Aqui está um exemplo de tentativa de encontrar as chaves de correspondência corretas para a classe:
$ udevadm info -a /sys/class/my_module
looking at device '/class/my_class':
KERNEL=="my_class"
SUBSYSTEM=="subsystem"
DRIVER==""
ATTR{wo_attribute}=="(not readable)"
looking at parent device '/class':
KERNELS=="class"
SUBSYSTEMS==""
DRIVERS==""
ATTRS{devcoredump/disabled}=="0"
ATTRS{drm/version}=="drm 1.1.0 20060810"
ATTRS{firmware/timeout}=="60"
ATTRS{gpio/export}=="(not readable)"
ATTRS{gpio/unexport}=="(not readable)"
ATTRS{my_class/wo_attribute}=="(not readable)"
Mas a regra do udev KERNEL=="my_class", GROUP="my_group"
não funciona.
O udev só funciona com dispositivos sob /dev
, ou há uma maneira de aplicar as regras aos atributos sysfs?