![루트가 아닌 사용자를 위한 "su" 모드에서 "gksu" 대체](https://linux55.com/image/205484/%EB%A3%A8%ED%8A%B8%EA%B0%80%20%EC%95%84%EB%8B%8C%20%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A5%BC%20%EC%9C%84%ED%95%9C%20%22su%22%20%EB%AA%A8%EB%93%9C%EC%97%90%EC%84%9C%20%22gksu%22%20%EB%8C%80%EC%B2%B4.png)
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>
- 나는
AdminRule
in 을 정의하고/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) 이 설정에서 운영자는 개인 사용자 계정을 사용할 수 없지만 대신 권한 수준이 다른 일반 로컬 사용자 계정을 사용한다는 점에 유의하십시오. 해당 권한이 필요한 사람에게는 해당 특정 사용자 계정의 비밀번호가 제공됩니다. 이것은 내가 통제할 수 없는 디자인 결정입니다.