관리자가 아닌 사용자 세션에서 GUI로 응용 프로그램을 관리자로 실행하려면 어떻게해야합니까? 관리자 권한으로

2 개의 사용자 계정을 정의했습니다.

  • (와 관리자 권한을 가진 하나의 sudo권리) =>를 호출 할 수 있습니다 adminuser.
  • 권한이없는 두 번째 ==> 호출하면
    이 두 번째 사용자에 대해 자동 로그인을 구성 할 수 있습니다 .
    normaluser
    normaluser

따라서 normaluser세션을 열고 관리자 권한으로 응용 프로그램을 실행하려면
터미널 Ctrl+ Alt+를 열고 T다음을 수행하십시오.

su adminuser
sudo anyapplication ...

normaluser세션 을 종료하지 않고도 잘 작동합니다 (세션을 열 필요 없음 adminuser).


그러나 응용 프로그램을 GUI (Graphic User Interface)로 실행해야하는 경우 어떻게해야합니까?
나는 그것에 대해하지만 :

su adminuser
gksu anyapplication ...

그러나 나는 얻는다

** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0


답변

PAM이 처리 할 수 ​​있습니다

이것은 Ubuntu 16.04에서 나를 위해 작동합니다 (편집 : 18.04 LTS에서도 작동합니다).

라인을 넣어 :

session optional pam_xauth.so

어딘가에 :

/etc/pam.d/su

그리고 / 또는

/etc/pam.d/sudo

“su-“또는 “sudo su-“를 수행하면 그래픽 앱을 루트로 사용할 수 있습니다.


답변

술어

이 답변에서 :

  • normaluser관리자가 아닌과 같은 명령을 실행 할 수없는 일반 사용자입니다 root와 함께 sudo.
  • admin에서 root와 같이 명령을 실행할 수있는 관리자입니다 sudo. 물론 모든 그래픽 명령 gksu/가gksudo 아닌 그래픽 프론트 엔드를 사용해야하며sudo 직접은 아닙니다 .
  • anyapplicationnormaluser로 실행하려는 그래픽 응용 프로그램의 이름입니다 root. 의 비밀번호를 normaluser알고 admin있으며 아마도이 목적으로 비밀번호를 사용할 수 있다고 들었습니다.

문제

문제의 원인과 지금까지 대부분의 다른 답변이 효과가없는 이유는 다음과 같습니다 ( Marty Fried탁월한 답변 제외).

  • gksusudo 또는 su 백엔드로 사용하도록 구성 할 수 있습니다 . 의 기본 동작 gksu우분투는에 대한 프론트 엔드 역할을하는 것입니다 sudo, 하지 에 대한 su. 즉 기본적으로 그런 말,하는 것입니다 gksugksudo행동 정확히 같은 . 맨 페이지를 참조하십시오 .
  • normaluser관리자가 아닌, 따라서 같은 명령을 실행할 수 없습니다 rootsudo. 원하는 사용자 의 비밀번호가 아니라, 자신을 실행하는 사용자sudo 의 비밀번호를 묻습니다 . 본인이 아닌 사람으로서 비밀번호를 사용하여 작업을 수행 할 수없는 것은 관리자가 아닌 것 입니다.
  • normaluser, 그것은 게스트 계정이 아닌 제공 할 수 다른 사용자로서 명령 실행 과를su 에 넣어, 다른 사용자의 암호 . 그러나 gksu의 프론트 엔드 역할을 sudo하지는 않습니다 su.
  • normaluser사용할 수 없기 때문에 명령을 직접 실행할 수 없으며 , 암호 가 없기 때문에 아무도 함께 할 수 없습니다 .rootnormalusersudorootsuroot

해결책

솔루션에는 두 가지 인증 단계를 수행하는 명령을 작성해야합니다.

  • normaluseradmin그래픽 명령을 실행 해야합니다 . 이렇게하려면 normaluser실행해야합니다 gksu으로 -w는 실행하기 위해 플래그 SU-모드 대신 기본 sudo는 모드-u플래그로 명령을 실행하는 admin대신 root.
  • 같은 명령을 실행 admin해야의 호출 gksu 없이-w 플래그 사용 sudo되기 위해 root.

여기 명령이 있습니다 (예, 😉 테스트했습니다 ).

gksu -w -u admin gksu anyapplication

비밀번호를 두 번 묻는 메시지가 나타납니다 .

  1. 먼저 백엔드 와 마찬가지로 명령을 실행 admin하려면의 비밀번호를 입력해야합니다 .normaluseradminsu
  2. 둘째, 백엔드 와 마찬가지로 명령을 실행 admin하려면의 비밀번호를 입력해야합니다 .adminrootsudo

맞습니다. admin의 비밀번호를 두 번 입력하십시오 .

기타 노트 :

  • 원하는 경우 두 번째 gksu를 대신하여 gksudo혼동을 줄이십시오. 우분투에서는 동일합니다. (첫 번째를 gksu로 바꿀 수도 gksudo있지만, 이는 매우 직관적이며 혼동 될 수 있습니다.)
  • -w의 짧은 형식입니다 --su-mode.
  • -Ssudo-mode 가 기본값 --sudo-mode이므로 짧은 형식 이지만 어느 것도 사용하지 않아도됩니다 .
  • 먼저 해를 끼치 지 않는 명령으로 테스트하여 원하는 작업을 수행 할 수 있습니다. (그렇지만 그렇게 할 필요는 없습니다.) 예를 들면 다음과 같습니다.
    gksu -w -u admin gksu xclock

    xclock 좋은 간단한 시계 창 응용 프로그램입니다.


답변

아마도 작동하는 한 가지 방법은 관리자로 처음 전환 할 때 “su”대신 “sux”를 사용하는 것입니다. sux는 스푸핑 된 사용자로부터 x 응용 프로그램을 실행하는 문제를 해결합니다. 표준 저장소 sudo apt-get install sux에 있으며 명령 줄 에 입력 하여 설치할 수 있습니다 .

그런 다음 “su”대신 “sux”를 사용하면 원하는 방식으로 작동합니다.

응용 프로그램의 예를 재사용 할 수 있습니다 xclock.

sux admin
gksu xclock

답변

pkexec

kdesudo와 gksu에 대한 유비쿼터스 대안이 있는데, pkexec이는 policykit-1많은 패키지에 필요한 패키지 에서 나온 것입니다.


답변

대신에

수 관리자
모든 응용 프로그램을 gksu ...

명령 자체를 gksu -u admin anyapplication사용하여 모든 작업을 수행하는 을 시도하는 것이 좋습니다 gksu. 또한 명령에 언급 된 사용자의 비밀번호를 입력해야합니다. 즉,이 경우에는 관리자 비밀번호 를 입력해야 합니다.


답변

이를 수행하기위한 명령은 다음과 같습니다.

gksu app-name

먼저 실행하지 않고 실행 하십시오 su. 일반 사용자 세션에서만 위의 명령을 실행하면 응용 프로그램이 루트로 실행됩니다.


답변

다음을 사용해야합니다.

gksudo AppName

이것은 먼저 그래픽 비밀번호 요청 (사용자 비밀번호)을 가져온 다음 GUI 앱을 루트로 시작합니다 (방금 시도했지만 실제로는 재미있었습니다. 재밌는 것 : gksu AppName그 후 즉시 시도해 보았습니다. “gk”접두사에서 알 수 있듯이 아마도 문제의 위치를 ​​완전히 알 수는 없습니다.)