1

I am writing a custom module kernel that boots at startup. I can write in the sysFS file using this :

echo -e "(0,0,255,750)\n" | sudo tee /sys/fs/led_sysfs/led_value

But I will have another software that will need to write to the sysFs file. This software can only be launched in user mode and not using sudo.

By default the permission of the SysFs is -rwxrwx--- And it's in the rules of creating a SysFs file that it can't be 777. What I found would be the best solution is to create a new group where only my user and the SysFs will be.

So I found that I could write a udev rule to change the parameter. The command udevadm info -a -p /sys/fs/led_sysfs give me this :

     KERNEL=="led_sysfs"
     SUBSYSTEM==""
     DRIVER==""
     ATTR{led_value}=="(not readable)"

looking at parent device '/fs': KERNELS=="fs" SUBSYSTEMS=="" DRIVERS==""

So I tried multiple different rules but none of them work... Here's what I tried :

KERNEL=="led_sysfs", ACTION=="add", RUN+="/bin/chmod 777 /sys/fs/led_sysfs/led_value ;/bin/chown root:led /sys/fs/led_sysfs/led_value ;"  
KERNEL=="led_sysfs", ACTION=="change", RUN+="/bin/chmod 777 /sys/fs/led_sysfs/led_value ;/bin/chown root:led /sys/fs/led_sysfs/led_value ;"  
KERNEL=="led_sysfs", RUN+="/bin/chmod 777 /sys/fs/led_sysfs/led_value ;/bin/chown root:led /sys/fs/led_sysfs/led_value ;" KERNEL=="led_sysfs", RUN+="/bin/chmod 777 /sys/fs/led_sysfs/led_value"  
KERNEL=="led_sysfs", RUN+="/bin/chown   root:led /sys/fs/led_sysfs/led_value" KERNEL=="led_sysfs",   RUN+="/bin/chmod 777 /sys/fs/led_sysfs/led_value;"  
KERNEL=="led_sysfs", RUN+="/bin/chown root:led  /sys/fs/led_sysfs/led_value; KERNEL=="led_sysfs", RUN+="/usr/bin/find  /sys/fs/led_sysfs/ -type f -name led_value -exec chown root:led {} ;  -exec chmod 666 {} ;"  

Does the problem come from how I create my module or my rules? Thanks in advance.

Ajay
  • 2,241
Tamanar
  • 11

1 Answers1

0

Solution found! I changed the way I create my module kernel. I use :

sysfs_file_change_owner(kobj_ref, led_attr.attr.name, new_uid, new_gid);

So the file will be in the same group as my user (created only for this use). With this, I can write to the sysfs file without adding a new rule.

Tamanar
  • 11