암호를 묻지 않도록 pkexec를 구성하는 방법은 무엇입니까?


12

수퍼 유저 권한으로 데몬 (파이썬으로 작성)을 호출해야하는 GUI 응용 프로그램이 있습니다. 사용자에게 암호를 묻지 않고이 작업을 수행하고 싶습니다.

데몬은 스크립트이기 때문에 SUID 비트를 직접 설정할 수 없습니다. 나는 이것을 위해 C 래퍼를 작성할 수는 있지만, 특히 실수로 시스템의 보안이 심각하게 손상 될 수있을 때 바퀴를 다시 발명하지는 않을 것입니다.

이 상황에서 일반적으로하는 일은 /etc/sudoersNOPASSWD 지시문을 사용하여 비밀번호없이 루트로 데몬을 실행할 수 있는 행을 추가하는 것 입니다. 이것은 명령 행에서 잘 작동합니다. 그러나 GUI 에서이 작업을 수행 pkexec하면 사용자 암호를 묻는 대화 상자가 나타납니다. 우분투 sudo에서 GUI의 호출 이 어떻게 든 가로 막히는 것 같습니다 pkexec.

이 주위에 깨끗한 방법이 있습니까? 차라리 setuid 스크립트의 번거 로움을 다룰 필요가 없습니다.


어떤 응용 프로그램에 대해 말합니까?
Radu Rădeanu

모든 GUI 앱. GUI 앱이 실행을 시도하면 sudo somecommand팝업 대화 상자 pkexec는 프로그램 실행을 허용하는 sudoers 정책이 있는지 여부에 관계없이 비밀번호 대화 상자입니다.
Chinmay Kanchi

답변:


14

:이 말을 잘못입니다 "우분투에서 호출 것 같다 sudoGUI에서 어떻게 든 의해 차단되고있다 pkexec" . pkexec와 공통점이 많지 않습니다 sudo. 과는 대조적으로 sudo, pkexec전체 프로세스에 루트 권한을 부여 할 것이 아니라 중앙 집중식 시스템 정책 제어의 미세한 수준은 허용하지 않습니다.

의 암호를 묻지 않고 GUI 응용 프로그램을 실행 pkexec하려면이 작업을 수행하기가 어렵지 않습니다. GParted 를 예로 들어 보겠습니다 . 열면 암호를 묻는 다음 대화 상자 창이 나타납니다.

gparted 인증

세부 사항을 클릭 하면 대화창이 다음과 같이 보입니다 :

gparted 인증-세부 사항

여기에서해야 할 일은 예를 들어 다음 명령을 사용하여 파일 을 여는 것입니다 ./usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy

gksu gedit /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy

다음 줄을 변경하십시오.

      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>

다음과 함께 :

      <allow_any>yes</allow_any>
      <allow_inactive>yes</allow_inactive>
      <allow_active>yes</allow_active>

파일을 저장하고 닫습니다. 다음으로 GParted 를 열면 더 이상 비밀번호를 묻지 않습니다.


예, pkexec는 실제로 sudo 호출을 차단합니다. 이 동작의 최소한의 예를 만들 수 있는지 살펴 보겠습니다.
Chinmay Kanchi

간단한 응용 프로그램에서는 이것을 복제 할 수 없으며 매우 구체적인 상황에서만 발생할 수 있으며 버그를 추적 할 시간이 없습니다. 나는 당신의 대답을 받아 들일 것입니다. 건배.
Chinmay Kanchi

@ChinmayKanchi 더 명확 해지자. 다시 예를 들어 보겠습니다 gparted. 터미널 sudo gparted에서 실행할 때 /usr/sbin/gparted루트 권한으로 파일 을 실행 합니다. gpartedGUI에서 시작할 때 실제로 다음 명령을 실행하는 것이 목적인 쉘 스크립트 인 시작 gparted-pkexec( /usr/share/applications/gparted.desktop파일 내부에서 확인할 수 /usr/bin/gparted-pkexec있음)은 다음과 pkexec "/usr/sbin/gparted"같습니다 pkexec gparted. 따라서와는 아무런 관련이 없습니다 sudo. 그리고이 명령은 터미널이 아닌 터미널에서 사용해야합니다 sudo gparted.
Radu Rădeanu

1
@ChinmayKanchi sudo는 GUI 앱이 아닌 셸 앱에만 사용해야합니다. 참조 man sudoman pkexec이러한 의미한다.
Radu Rădeanu

네, 두 가지 요점을 모두 알고 있습니다. 내 상황은 sudo를 사용하여 쉘 프로그램 (나도 데몬, 나도 작성)을 시작하려고하는 GUI 응용 프로그램 (나에 의해 작성 됨)이 있다는 것입니다. 어떤 이유로 든 이렇게하면 sudo 대신 pkexec가 호출되어 데몬에 대해 만든 sudo 정책이 무시됩니다.
Chinmay Kanchi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.