루트가 아닌 사용자를 위한 "su" 모드에서 "gksu" 대체

루트가 아닌 사용자를 위한 "su" 모드에서 "gksu" 대체

Oracle Linux 8 설치에서 (그래픽) 프로그램이 다른(루트가 아닌) 사용자로 실행되는 GNOME 쉘용 데스크탑 실행 프로그램을 구현하려고 합니다. 하지만 비밀번호 확인을 시행하고 싶습니다.대상 사용자로gksu, 즉 모드 와 유사한 동작입니다 -w.

이는 승인된 운영자가 대상 사용자의 비밀번호를 알고 기능에 액세스할 수 있는 편리한 방법을 제공하는 반면, 승인되지 않은 운영자는 시작된 프로그램을 사용할 수 없도록 하는 것입니다. (1)

나는 이것이 pkexec현재 다른 사용자로 프로그램을 시작하는 데 권장되는 방법이라는 것을 알고 있습니다. 또 다른 옵션 beesu,Oracle Linux 8에서는 작동하지 않는 것 같습니다..

다만, 비밀번호 기반 인증이 필요한 경우에는폴킷만 허용됨

  • 호출 사용자의 비밀번호로 인증합니다( 사용 auth_self). 또는
  • 관리자의 비밀번호로 인증합니다( 사용 auth_admin).

다음과 같은 대상 사용자의 비밀번호를 묻는 옵션을 찾을 수 없습니다.

pkexec--사용자대상 사용자/usr/bin/그래픽 프로그램

주문하다.

내가 시도한 것

targetuser내 접근 방식은 그것을 관리자로 정의하는 것이 었습니다.이 단일 사용 사례의 경우. 섹션의 설정을 통해 targetuser관리자 목록에 전역적으로 추가하고 싶지 않습니다.AdminIdentities[Configuration]폴킷지방 정부. 그래서,

  • /usr/share/polkit-1/actions/프로그램 호출과 일치하는 설정을 통해 작업을 정의했습니다.pkexec
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/graphical_program</annotate>
    
    그리고 통과하려면 관리자 사용자 인증이 필요합니다.
    <defaults>
       <allow_any>no</allow_any>
       <allow_inactive>no</allow_inactive>
       <allow_active>auth_admin</allow_active>
    </defaults>
    
  • 나는 AdminRulein 을 정의하고 /usr/share/polkit-1/rules.d/선언했습니다.
    polkit.addAdminRule(function(action, subject) {
         if (action.id == "org.my.rule.for.graphical_program") {return ["unix-user:targetuser"];}
         }
    );
    
    targetuser(전용) org.my.rule.for.graphical_program어떤 사용자가 실제로 관리 사용자인지 물으면 관리 사용자를 반환해야 합니다.

이제 실행하면 pkexec --user targetuser /usr/bin/graphical_program작업이 올바르게 일치하는 것을 볼 수 있지만(표시된 메시지는 <message> ... </message>작업 파일의 노드에 설정한 것과 정확히 일치합니다) AdminRule적용되지 않는 것 같습니다. 비밀번호 대화 상자가 여전히 필요합니다.뿌리비밀번호 - 시스템 로그에는 규칙이 (적어도) 올바르게 로드되고 컴파일되었음을 나타내지만 구문 문제가 되어서는 안 됩니다.

이 설정이 어떻게 작동하는지 아는 사람 있나요?폴킷, 또는 Oracle Linux 8(또는 유사한 RHEL 8 파생 제품)에서 사용할 수 있는 대체 그래픽 인증 메커니즘은 무엇입니까?


(1) 이 설정에서 운영자는 개인 사용자 계정을 사용할 수 없지만 대신 권한 수준이 다른 일반 로컬 사용자 계정을 사용한다는 점에 유의하십시오. 해당 권한이 필요한 사람에게는 해당 특정 사용자 계정의 비밀번호가 제공됩니다. 이것은 내가 통제할 수 없는 디자인 결정입니다.

관련 정보