데스크탑 중립 gksudo가 있습니까?


17

그래픽 응용 프로그램을 루트로 실행하는 것을 목표로하는 다양한 데스크탑을위한 다양한 도구가 있습니다. gksudo, kdesudo, empower, 등 ...

그러나 어떤 리눅스 데스크탑에서도 사용할 수있는 스크립트를 작성한다면 어떻게 될까요? 거기에 xdg-sudo어떤 종류의가 ..? 데스크탑 환경에서 sudo 액세스를 얻는 표준입니까?

답변:


16

@Tachyons 제안에 따라, 나는에 대해 많은 연구 pkexec와 그 것이다 최고 !

  • 널리 사용되는 패키지 인 PolicyKit의 일부입니다 .
  • freedesktop.org에서 주최 및 후원
  • Gnome , Unity , MATE , Cinnamon , KDE , LXDEXFCE 등의 기본값
  • D-Bus를 통해 작동하므로 잘 정의 된 프로토콜을 사용하여 완전히 데스크톱 중립적입니다.
  • 많은 DE 에서 로그인 화면, 종료 / 다시 시작, 디스크 관리 (udisks / automount) 등과 같은 여러 서비스에서 사용 됩니다.

예, 그것은 모든 요구 사항을 충족 시키며 그것이 "범용 gksudo" 가 될 수있는 가장 가까운 것 같아요 .

즉, pkexecPolicyKit의 명령 줄 프런트 엔드입니다. 두 가지 기본 작동 모드가 있습니다.

  • 을 사용하여 간단하게 실행하면 sudo멋진 GUI 프롬프트가 표시됩니다.

    $ pkexec rm -rf /

pkexec GUI 프롬프트

  • 또는 응용 프로그램에 대한 PolicyKit 인증 파일을 생성하여 삭제하면 /usr/share/polkit-1/rules.d특정 작업에만 루트 액세스, 다른 사람에게는 비밀번호 필요 없음, 특정 경로로 제한되는 액세스 등의 많은 사용자 정의 및 보안 관련 옵션을 사용할 수 있습니다. 등 세분화하여 설정을 미세 조정할 수 있습니다.

6

보다 일반적인 방법은 "도우미 프로그램"을 작성하는 것입니다. 이러한 프로그램은 사용자에게 암호를 묻습니다. 예를 들어 Zenity가 설치되어 있다고 확신하면 사용할 수 있습니다. 그렇지 않으면 Python 또는 GUI와 상호 작용할 수있는 도우미 프로그램을 작성해야합니다.

( "askpass") 및 (stdin) 옵션에 대한 sudo설명서를 읽으십시오 .-A-S

sudo스크립트에서 실행할 때 -H를 시뮬레이션 하려면 (홈) 옵션 이 필요합니다 gksudo.

이 방법은 잘 작동하지만 도우미 프로그램을 철저히 테스트하여 버그가 없는지 확인해야합니다.


1
또한 프로그램에서 xauth 토큰 전달을 처리해야합니다.
symcbean

4

아니요, 루트 (또는 다른 사용자의) 권한을 얻는 표준 방법은 없습니다.

가능한 많은 시스템과 호환 되려면 어떤 방식 으로든 가정하지 말고 사용자에게 스크립트를 특정 사용자로 실행해야한다고 알려주십시오. 그런 다음 스크립트가 올바른 방식으로 실행되도록 시스템을 구성하는 것은 사용자 / 관리자에게 달려 있습니다.

su, sudo 및 ConsoleKit과 같은 가장 일반적인 인증 시스템을 사용하는 방법에 대한 제안을하는 것이 좋습니다.


2009 년 초에는 사실이지만, 고맙게도 현재 polkit(이전의 PolicyKit)는 표준으로 간주 될 정도로 널리 퍼져 있습니다.
MestreLion
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.