Gnome 3 - 루트로 명령을 실행하기 위한 사용자 정의 키보드 단축키?

Gnome 3 - 루트로 명령을 실행하기 위한 사용자 정의 키보드 단축키?

내 키보드 백라이트 기능 키가 작동하지 않는 것 같아서 루트로 실행해야 하는 키보드 밝기를 변경하는 스크립트를 작성했습니다. 이렇게 부르는데...

sudo /usr/bin/local/backlight inc
sudo /usr/bin/local/backlight dec 

이것은 터미널에서는 잘 작동하지만 키보드 설정을 통해 만든 사용자 정의 키보드 단축키를 사용하는 명령으로는 작동하지 않습니다.

여기서 추측만 해보면 문제는 키보드 단축키를 통해 호출할 때 명령이 실제로 내 사용자가 아니라 다른 사람으로 실행되고 이것이 sudoers 파일에 표시되지 않는다는 것입니다.

답변1

Gnome 3은 다음과 같은 프로그램을 사용합니다.폴킷따라서 실행 파일을 루트로 실행하는 올바른 방법은 다음을 통해입니다.프로그램 실행:

pkexec를 사용하면 권한 있는 사용자가 다른 사용자로서 PROGRAM을 실행할 수 있습니다. 사용자 이름을 지정하지 않으면 프로그램은 관리 수퍼유저 루트로 실행됩니다.

활성 세션의 사용자에게 루트로 명령을 실행하도록 권한을 부여하려면 다음 파일을 통해 위 의 XML사양에 따라 새 작업을 정의 해야 합니다 ./usr/share/polkit-1/actionsorg.fedora.pkexec.kbback.policy

콘텐츠 /usr/share/polkit-1/actions/org.fedora.pkexec.kbback.policy:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>

  <icon_name>input-keyboard</icon_name>
  <action id="org.fedora.pkexec.kbback">
    <message>Authentication is required to Change Keyboard Backlight</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/local/bin/backlight</annotate>
  </action>

</policyconfig>

다음 단계는 그놈 키보드 설정을 통해 명령을 키보드 단축키에 할당하는 것입니다:

pkexec /usr/local/bin/backlight inc
pkexec /usr/local/bin/backlight dec 

(참고: 실행 파일 경로를 사용했습니다 /usr/local/bin/backlight. 실행 파일 경로가 다른 경우 작업 파일과 두 명령을 모두 변경해야 합니다.)

답변2

gksudo이런 경우에는 를 사용해야 한다고 생각합니다. 나는 매뉴얼 gksudo(1)페이지를 인용하고 있습니다 :

gksu는 su의 프런트엔드이고, gksudo는 sudo의 프런트엔드입니다. 주요 목적은 X 터미널 에뮬레이터를 실행하거나 su를 직접 사용하지 않고 루트가 필요한 그래픽 명령을 실행하는 것입니다.

따라서 여기서 문제는 키보드 단축키로 실행된 명령이 (의사) 터미널 장치에 연결되지 않아 sudo오류가 발생하므로 gksudo대신 사용해야 한다는 것입니다.

관련 정보