X를 사용자로 시작하고 키보드 밝기를 로 설정해야 합니다 /sys/class/leds/asus\:\:kbd_backlight/brightness
. 재부팅 후 디렉토리가 다시 생성되므로 /sys/
권한이 재설정됩니다. 부팅할 때마다 모든 사용자가 파일을 쓸 수 있도록 설정할 필요가 없도록 하려면 어떻게 해야 합니까?
저는 SDDM을 로그인 관리자로 사용하고 KDE를 DE로 사용하고 있습니다.
답변1
아니요, 그럴 수 없습니다. sysfs 권한은 커널 공간에 정의되어 있으며 사용자 공간 도구를 사용하여 변경할 수 없습니다(커널 측 지원이 없는 한).
그러나 자신의 질문에 대해서는 모든 사람이 해당 경로에 쓸 수 있도록 sudo 항목을 설정할 수 있습니다.ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness
해당 디렉토리에 쓸 때 다음과 같은 스크립트를 사용하십시오.echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"
답변2
권한 변경 사항을 보관하는 또 다른 방법은 udev 규칙을 사용하는 것입니다.
$ cat /etc/udev/rules.d/99-asus.rules
# allow keyboard brightness control for everyone
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="asus::kbd_backlight", RUN+="/bin/chmod a+w /sys/class/leds/%k/brightness"
udevadm test /sys/class/leds/asus::kbd_backlight
보고서에서 사용하려는 규칙을 테스트하려면 지정된 실행 명령을 확인해야 합니다.
다음을 사용하여 트리거합니다.
sudo udevadm trigger --verbose --action=add /sys/class/leds/asus::kbd_backlight
기반으로이 답변
답변3
nodered 서비스를 실행하기 전에 권한을 설정해야 하는 비슷한 문제가 있었습니다. Goldilocks의 의견을 바탕으로 다음과 같은 시스템 스크립트를 만들었습니다.
$ 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
서비스 파일을 작성한 후 활성화했습니다.
$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service
답변4
Linux의 디렉토리는 /sys
가짜입니다. 이는 파일로 위장한 파일의 커널 보기입니다. 따라서 권한을 영구적으로 변경하는 것은 커널을 해킹하는 것을 의미하며 이는 현명하지 않습니다. 의견에서 알 수 있듯이 systemd
이에 대한 단위 설정이 해결책이 될 수 있습니다(일반적으로 설정 변경은 시작 프로세스의 일부로 수행됩니다).