/sys/class/backlight/acpi_video0/brightness(udev?)에 대한 사용자 액세스를 프로그래밍 방식으로 제공하는 방법

/sys/class/backlight/acpi_video0/brightness(udev?)에 대한 사용자 액세스를 프로그래밍 방식으로 제공하는 방법

/sys/class/backlight/acpi_video0/brightnesssudo데스크탑 시작 시 마지막 백라이트 설정을 증가/감소, 설정, 검색 및 복원하는 간단한 스크립트를 제공하는 스크립트(via)를 통해 백라이트를 제어합니다 . xrandrNvidia 인터페이스는 sysfs 장치를 통해 구현되므로 옵션이 아닙니다.

동일한 작업을 수행하기 위해 슬라이더와 스핀박스를 제공하는 간단한 Qt 인터페이스를 작성했지만 사용자가 일부 인터페이스를 사용 su하거나 sudo거치지 않고도 설정을 수정할 수 있도록 프로그램에 높은 권한을 제공하는 방법에 대해 고민하고 있습니다. .execvsystem

이것은 중복이 아닙니다사용자로 백라이트 제어(xbacklight 없음). (이것은 이미 스크립트로 수행한 작업입니다.)

이 질문은 프로그래밍 방법 질문에 가깝습니다(SO의 경우 약간 일반적임). 내가 이해하지 못하는 것은 다음을 수행하는 것이 더 나은지 여부입니다.

  1. 사용자가 밝기를 변경할 수 있도록 권한을 변경하는 udev 규칙을 작성한 다음 원래 권한을 복원하는 두 번째 규칙을 작성하시겠습니까? (하지만 프로그램 내에서 규칙을 실행하는 방법은 무엇입니까?)
  2. 전체 데스크톱 세션에 대한 사용자 권한을 변경하는 udev 규칙을 작성합니다(허용 가능 - 선호되지는 않지만 사용자가 시작 시가 아닌 로그인할 때 규칙을 트리거하는 방법은 무엇입니까?)
  3. 아직 발견하지 못한 코드에서 다른 권한 상승을 사용하고 있습니까?

간단하고 일반적인 해결책이 있어야 할 것 같지만 udev 문서를 살펴본 후 sysfs 파일의 권한(또는 소유자 또는 그룹)을 변경하고 복원하는 규칙은 간단하지만 프로그램에서 변경을 어떻게 트리거합니까? 시작 후 종료 시 원래 권한을 복원하시겠습니까?

/sys/class/backlight/acpi_video0/brightness내가 선호하는 것은 쓰기 직전에 변경이 이루어졌다 가 즉시 복원되지 않는 한 sysfs 장치가 변경되지 않도록 프로그램 내에서 변경 사항을 처리하는 것입니다 .

저는 udev 전문가가 아닙니다. 기본적으로 매뉴얼 페이지와 1/2 다스 튜토리얼과위키피디아 페이지. 그렇게 하면서 나는 C/C++에서 규칙을 트리거하는 프로그래밍 방식을 발견하지 못했습니다(또는 그것을 봤을 때 인식하지 못했습니다). 그래서 udev가 솔루션을 제공할지는 모르겠지만, 파일 권한 관점에서 볼 때 프로그램 자체에 대한 권한을 높이는 안전한 방법을 찾는 것보다 더 나은 연구 영역처럼 보입니다.

그럼 udev가 존재하는 걸까요? 그렇다면 코드에서 트리거하는 방법은 무엇입니까? 아니면 전체 데스크톱 세션 동안 sysfs 파일에 대한 권한을 변경하는 데 만족하시나요? -- 그렇다면 부팅 대신 데스크톱 부팅 시 이를 트리거하는 방법은 무엇입니까?

udev가 아닌 경우 sysfs 파일에 직접 쓸 수 있도록 임시 권한 상승을 달성하는 안전한 방법이 있습니까?

최악의 시나리오에서는 간단히 execvor를 사용하여 system스크립트를 호출 하고 sudo처리하도록 할 수 있지만 각 사용자에 대해 구성하고 or의 회원이 되도록 할 필요 없이 모든 사용자에 대해 처리할 수 있는 보다 우아한 방법을 찾고 있습니다. 그룹 /etc/sudoers.wheelsudo

관련 정보