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


33

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

문제는 왜 이렇게 시스템을 구성 했습니까? 보안이 향상되었다고 생각하십니까? 대신 :) 대신 "admin"계정에서 자동 로그인을 구성 할 수 있으므로 로그인 할 때 비밀번호를 묻지 않습니다. 관리 작업을 수행 할 때 여전히 비밀번호가 필요합니다.
Sergey

5
@Sergey normaluser명령을 실행할 수없는 사람이 때때로 사용하는 경우 비 관리자 root를 만들면 보안이 확실히 향상됩니다 . 누군가에게 사용자 계정을 제공하지만 자신의 암호를 알려주지 않는 것은 번거롭고 복잡한 Boris의 상황을 훨씬 뛰어 넘는 위험입니다. 이것이 왜 문제가되는지에 대한 완전한 설명을 원한다면, 새로운 질문을 게시하는 것이 좋습니다. 그러나 그 이유 중 3 가지가 사용자가 화면을 잠 그거나 잠금 해제하고, 다른 세션 유형으로 로그 아웃했다가 다시 로그인 할 수 있어야하기 때문입니다. 데이터를 해독하십시오 . normaluserecryptfs
Eliah Kagan

2
정확히 말해, 가족의 PC를 사용하여 모든 사람이 관리자 암호를 알려 화면 잠금을 해제하는 것은 말이되지 않습니다. 이 normaluseradminuser설정은 황금 규칙입니다.
보리스

1
공평하게도, OP가 normaluser일상 업무에 admin계정을 사용하고 관리 작업을 수행하기 위해 계정을 사용하고 있다는 인상을 받았습니다 . 다중 사용자 컴퓨터에서는 이것이 의미가 있습니다.
Sergey

답변:


5

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

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

라인을 넣어 :

session optional pam_xauth.so

어딘가에 :

/etc/pam.d/su

그리고 / 또는

/etc/pam.d/sudo

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


이것이 쿠분투 16.04에서도 작동하는지 확인합니다. 감사!
1

감사합니다, 그것은 18.04에서도 저에게 효과적입니다! 것으로 보인다 최선의 대안sux하고 gksu더 이상 사용할 수없는 것을.
보리스

29

술어

이 답변에서 :

  • 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 좋은 간단한 시계 창 응용 프로그램입니다.

1
완벽합니다.이 영리한 팁을 잊어 버리지 않기 위해 .bashrc에 별명을 추가했습니다.
Boris

왜 그런지 모르지만 지금 (우분투 14.04부터) sudo작동 하도록 시작 해야합니다. 예 :sudo gksu -w -u thedude gksu xclock
Boris

참고로 kdesudo, 최소한 쿠분투에서 더 깨끗하게 작동하는 것 같습니다.
MDTech.us_MAN

불행히도 gksu더 이상 사용할 수없는 것 같습니다
Boris

11

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

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

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

sux admin
gksu xclock

3
suxUbuntu 14.04 64 비트 에는 더 이상 버전이 없습니다;(
Boris


@Boris 쉘 스크립트입니다. 역사적인 리포지토리에서 다운로드하여 예를 들어 packages.debian.org/source/wheezy/sux
Nobody

2

pkexec

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


나는 (관리자가 아닌과에 루트가 될 수없는 일반 사용자 방법을 설명하기 위해이 답변을 확대하는 것이 좋습니다 sudo관리자 (즉, 누군가의 비밀번호를 알거나 폴킷가) 와 루트가 될 sudo또는 폴킷), 사용할 수 pkexec에 루트로 그래픽 프로그램을 실행하십시오. 그것이 여기서 질문하는 것입니다. 그것은 그다지 분명하지 pkexec특히 이후, 적어도 광범위하게 구성 파일을 편집하지 않고,이 작업을 수행합니다 pkexec일반적으로 (폴킷 프로파일없이) 임의의 그래픽 프로그램을 실행하는 데 사용할 수 없습니다 에 모두를 . 방법이 있습니까?
Eliah Kagan

@EliahKagan 이것은 기본 구성으로 우분투에서 작동합니다-그냥 실행 pkexec command하면 작동합니다. 구성은 /usr/share/polkit-1/actions/org.freedesktop.policykit.policy명명 된 패키지에 의해 설치되는 파일에 있습니다. 그리고 실제로는 관리자 암호를 한 번만 작성하면됩니다
pqnet

0

대신에

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

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


1
경우 기본 구성 우분투 시스템에서 normaluser실행 gksu -u admin anyapplication이를 묻습니다 normaluser의 암호가되기 위해 admin사용하여 sudo백엔드를, 마찬가지로 gksu anyapplication에 대한 메시지를 표시 할 normaluser되기 위해 패스워드 ' root사용하여 sudo백엔드. 같은 이유로 둘 다 실패합니다 .로 normaluser명령을 실행할 수있는 권한이 없습니다 sudo.
Eliah Kagan

-1

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

gksu app-name

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


1
작동하지 않습니다. 권한이없는 사용자 세션에서 시도하고 있습니다.
Boris

오류 메시지는 무엇입니까?
SirCharlo

내 입력 normal사용자 암호를 - 나는 "루트 사용자로 실행하는 것이 불가능"라는 메시지가 얻을
보리스

내 입력 superuser/admin암호 - 나는 "잘못된 암호 다시 시도하십시오"라는 메시지를 얻을
보리스

-1

다음을 사용해야합니다.

gksudo AppName

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


1
sudo 권한을 가진 관리자 사용자 세션에서 시도했기 때문에 귀하의 경우에는 작동합니다. sudo 권한이없는 관리자가 아닌 사용자 세션의 경우는 어떻습니까?
보리스

관리자가 아닌 사용자 (나의 사용자)와 함께 일반 터미널 창에서 gksudo를 사용했습니다. 그러나 여전히 sudo perms를 가지고 있기 때문에 두 번째 시도에는 맞습니다. 그러나 Boris의 문제는 다른 문제입니다. 그의 앱은 X에 연결할 수 없으므로 제 경우에는 두 가지 모두 작동했습니다. 원래 질문에서 볼 수 있듯이 sudo텍스트 모드에서 그에게 도움이됩니다.
Izzy

-1

수퍼 유저는 하나 뿐이며 루트입니다.

사용자 1은 관리자이며 sudo 권한이 있습니다.
사용자 2는 관리자가 아니며 sudo 권한이 없습니다.

사용자 1로 로그인 한 후 다음 명령을 사용하십시오.

gksudo app-name  

(앱 이름으로 앱 이름 바꾸기)
희망이 도움이 되길 바랍니다. :영형)

편집 : 요청에 따라 추가 정보

컴퓨터
사용자 인 경우 sudo 사용 권한이있는 사용자 1을 사용하는 것은 sudo 사용 권한
이없는 사용자 2를 사용하는 것과 다르지 않습니다.
사용자 1은 사용자 2와 동일한 권한을 갖습니다. 사용자 1이
sudo 접두어를 사용하거나 응용 프로그램을 루트 권한으로 실행할 수 있도록 암호를 제공하지 않는 한.
유일한 차이점은 사용자 2가 앱을 루트로 실행할 수 없다는 것입니다.

그것이 당신을 위해 조금 설명하는 데 도움이되기를 바랍니다. :영형)


수퍼 유저와 관리자의 설명을 해주셔서 감사합니다. 질문을 편집하겠습니다. "사용자 1로 로그인"=> 사용자 1과의 세션 열기는 무엇을 의미합니까? 그게 내가 피하고 싶은 것입니다.
보리스

요청에 따라 추가 정보를 추가했습니다 : o)
Fernhill Linux Project

내 아내와 아이들은 자동 로그인과 함께 user2를 사용하고 있기 때문에 그 사용자에게 sudo를 사용하지 않는 것이 좋습니다.
보리스

좋은 생각처럼 들립니다-나도 아이들이 있습니다. 아직 user1로 로그인하여 명령을 실행 했습니까?
Fernhill Linux Project

1
예, 가능하지만 사용자 세션을 변경하는 것은 고통 스럽습니다. 나는 보통 여러 번해야합니다 : 관리자 세션으로 이동하여 일부 설정을 정의하고 일반 사용자 세션으로 전환하여 테스트를 반복하십시오. 정상 세션에서 머무를 수있는 것이 매우 좋습니다. GUI를 사용한 애플리케이션을 제외하고는 su admin+ sudo ...example으로 대부분 처리합니다.sudo vi file
Boris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.