¿Cómo establecer permisos en / sys / permanent?

12

Estoy comenzando X como usuario y necesito configurar el brillo de mi teclado /sys/class/leds/asus\:\:kbd_backlight/brightness. El /sys/directorio se vuelve a crear después del reinicio, por lo que los permisos también se restablecerán. ¿Cómo lo configuro para que no necesite que el archivo sea editable por todos los usuarios después de cada arranque?

Estoy usando Archlinux con SDDM como administrador de inicio de sesión y KDE como DE.

xoned
fuente
2
Podría poner un comando en un servicio de arranque systemd.
Ricitos de oro
¿Quiere crear un servicio systemd propio que establezca los permisos? ¿O hablas desde un archivo específico?
xoned
El primero "Servicio" es el término systemd, aunque en este caso solo sería un comando único y no un demonio. Podría convertirlo en un tipo de servicio de "cosas varias" como rc.local está bajo sysV. En este caso, el servicio solo ejecuta un script de shell y coloca el comando allí.
Ricitos de oro

Respuestas:

13

No, no puede, el permiso de sysfs se define en el espacio del kernel y no se puede cambiar con las herramientas del espacio del usuario (a menos que sea compatible con el kernel).

Pero para su propio problema, puede configurar una entrada de sudo que permita a todos escribir en esa ruta, es decir ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness

Y cuando escribes en ese directorio, usa un script como este, echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"

margarita
fuente
Lo intenté, pero siempre pide la contraseña. También intenté agregar un NOPASSWD: detrás de (ALL).
xoned
@Timo, ¿puedes intentarlo de nuevo? Ver mis actualizaciones
margarita
Ahora funciona. El problema era que mi entrada fue sobrescrita por otra sin NOPASSWD. Y acepté tu respuesta porque era más fácil que las otras respuestas. Gracias a todos.
xoned
Estoy usando linux Mint Debian en sony vaio e intento crear un archivo /sys/devices/platform/sony-laptop/kbd_backlightpara controlar la retroiluminación del teclado. He cambiado la ruta en su código que conduce a este error: bash: syntax error near unexpected token ('' El comando que escribí es ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlightPor favor ayuda
Indra
No pude hacer que esto funcione en una máquina Ubuntu hasta que agregué una coma entre /usr/bin/teey /sys/class.... Después de un breve vistazo a la gramática man sudoers, sospecho que la coma es necesaria.
Sage Mitchell
4

El /sysdirectorio en Linux es falso, es una vista al núcleo disfrazado de archivos. Entonces, cambiar los permisos de forma permanente significa piratear el kernel, y eso sería desaconsejable. Como dicen los comentarios, tal vez una systemdconfiguración de unidad sea una solución (en general, configure el cambio como parte del proceso de arranque).

vonbrand
fuente
4

Tuve un problema similar, necesitaba establecer los permisos antes de ejecutar el servicio con noder. Siguiendo el comentario de goldilocks, creé este script systemd:

$ cat /etc/systemd/system/setledspermissions.service

[Unit]
Description=Set leds writable to everybody
Before=nodered.service

[Service]
Type=oneshot
User=root
ExecStart=/bin/bash -c "/bin/chmod a+w /sys/class/leds/led0/*"

[Install]
WantedBy=multi-user.target

Después de escribir el archivo de servicio, lo habilité con

$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service
hariseldon78
fuente
¿Es este generalmente el camino a seguir cuando se necesita otorgar acceso de escritura a / sys / caminos específicos? Mi caso de uso es configurar el brillo de la retroiluminación de la pantalla en mi ĺaptop.
Richrd
Supongo que es porque la ruta del sistema se recrea en cada arranque. Pero no soy lo suficientemente experto como para estar seguro de eso.
hariseldon78