2012-04-11 5 views
10

나는 Gnome 셸 확장을 구축하고 있으며 확대 된 권한으로 몇 가지 작업을 수행 할 수 있기를 원합니다. 그래서 저는 "정책 키트"를 사용해야한다고 생각합니다.하지만 어떻게해야 할 지 모르겠습니다.Gnome shell privilege escalation

그래서, 내가 ifconfig eth0 down 또는 ifconfig eth0 up

내가 터미널에서 실행할 수있는 같은 것을하고 싶었던 말 : pkexec ifconfig eth0 down과 암호를 묻습니다하고 다음을한다.

하지만 확장 프로그램 내부에서 어떻게해야합니까?

나는/usr/share/polkit-1/actions에 파일을 만드는 것과 관련이 있지만 인터넷이나 다른 곳에서는 찾을 수 없다고 확신한다.

암호를 입력 할 필요가 없도록 설정할 수 있기를 원하며 확장 프로그램은 언제든지 특정 명령을 실행할 수 있습니다.

나는 어떤 명령을 실행할 수있게하는 것이 좋습니다. 그건 내가 요구하는 것이 아니고, 나는 단지 하나의 프로그램/명령을 실행할 수 있기를 원한다.

편집 : 확실하지 않지만 암호를 입력 할 필요가 없다고 생각됩니다. 나는 sudo가 처음부터 잠시 동안 암호를 묻지 않는다는 것을 알고있다. 그래서 나는 비슷한 기능을 원한다. 가능한 무엇이 확실하지 않습니다.

+0

일반적으로 셸 확장 (셸 확장)이 셸 자체와 동일한 프로세스 내에서 실행되기 때문에 일반적으로 너무 잘 작동하지 않습니다. 모든 종류의 보안 "누출 ..."- 안전한 내기는 실제로'pkexec'을 사용하거나 별도의 프로세스에서 권한이 부여 된 코드의 "안전하지 않은"비트를 격리하는 것입니다 ... PS : 암호로 다시 묻는 것은' sudo' 외는 시스템 전체의 보안 설정입니다. 기본값은 대개 a (long) 후에 다시 프롬프트하는 동안입니다. – BRFennPocock

+0

@BRPocock yes는 'pkexec'을 사용하여 원하는 작업입니다. 확장 프로그램 내에서 어떻게 할 수 있습니까? – Jay

답변

2

내가 PolicyKit 작동하지 않았기 때문에 긴 시간이다,하지만 내가 기억하는 것과, 당신은 같은 내용으로, 액션/디렉토리에있는 파일을 만들 참가 : 당신이이

<?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> 

    <action id="org.freedesktop.policykit.pkexec.run-ifconfig"> 
    <description>Configure network</description> 
    <message>Authentication is required to set ifconfig parameters</message> 
    <defaults> 
     <allow_any>no</allow_any> 
     <allow_inactive>no</allow_inactive> 
     <allow_active>...</allow_active> 
    </defaults> 
    <annotate key="org.freedesktop.policykit.exec.path">/sbin/ifconfig</annotate> 
    </action> 

</policyconfig> 

값을 다음으로 변경하십시오.

<allow_active>...</allow_active> 

원하는 값으로 변경하십시오. 값 선택 :

  • 을 "NO"액세스 거부합니다
  • "예"것이다 암시 "AUTH_USER"는
  • "auth_admin는"관리자 인증을 요구하는 사용자 인증이 필요한
  • 액세스를 허용하지 않습니다.
  • "auth_user_keep"및 "auth_admin_keep"는 비슷하게 기능하지만 나중에 몇 분 동안 인증을 유지합니다.
  • 플러스 다른 값은 here입니다.

allow_active 키의 값을 "yes"로 변경하면 인증 요구가 중지됩니다.

그런 다음 필요에 맞게 조치 파일을 적용하고 호출해야합니다.

우고,

1

나는 시도하고 조정을위한 선택을 구현하기 위해 거의 같은 문제가 발생했다. 여기에 내가 생각해 낸 것이있다.

다른 사람들이 대답 했으므로 정책 파일을 작성해야합니다 ("auth_admin"을 사용했습니다). "/ usr/share/polkit-1/actions/tuned-adm에 배치했습니다.정책 "이라고 말했습니다. 확장 모델을 통해 배포 할 수 있다고 생각하지 않으므로 업스트림에 포함하도록 요청해야합니다.

다음으로 pkexec과 my 명령을 사용하여"sudo popup "을 얻습니다. . 여기

const GLib = imports.gi.GLib; 
const Util = imports.misc.util; 
this.pkexec_path = GLib.find_program_in_path('pkexec'); 
this.tunedadm_path = GLib.find_program_in_path('tuned-adm'); 
let result = Util.trySpawnCommandLine(this.pkexec_path + " " + this.tunedadm_path + " list") 

진짜 키커 내가 명령 줄을 실행하는 다른 방법의 몇 가지를 사용했다 작동하고 그들이 그놈 쉘을 잠글 것 내가 여기에 코드를 발견 :.. 특히 유용 할 https://github.com/nodefourtytwo/gnome-shell-extension-cpu-freq/blob/master/extension.js