명령 줄없이 GUI sudo 비밀번호 프롬프트를 얻는 방법?


10

현재 루트 액세스가 필요한 모든 명령에 대해 명령 줄에 입력해야합니다.

sudo가 필요할 때 명령 줄에서 명령을 입력하지 않고 GUI에서 암호를 입력하라는 메시지를 표시하고 싶습니다.

이것을 가능하게하는 방법이 있습니까? 이전 버전의 Ubuntu 데스크탑에는이 기능이 기본적으로 포함되어있었습니다.

이 버전의 Ubuntu (현재 실행 중)는 서버 설치에서 업그레이드했습니다.

사용자 계정이 이미 sudo 그룹에 추가되었습니다. 따라서 sudo gedit또는 같은 명령을 실행할 수 sudo apt-get있지만 Ubuntu Software Center에 소프트웨어를 설치할 수 없습니다.

답변:


10

TL; DR :policykit-1policykit-1-gnome패키지를 설치하십시오 .

아마 폴킷 (일명 PolicyKit)이 필요할 것입니다.

소프트웨어 센터를 포함하여 Ubuntu의 대부분의 그래픽 시스템 관리 유틸리티는 일반적으로 sudo또는 그와 유사한 도구 없이 실행될 수 있습니다 . 프로그램을 실행하는 것과 같은 방식으로 실행합니다.

루트 권한 이 필요한 작업을 수행 할시기가 되면 polkit 을 사용하여 필요한 작업을 수행합니다. polkit은 관리자가 root로 작업을 수행 할 수 있도록 sudo와는 별도의 메커니즘입니다. 데스크탑 우분투 시스템에 설치되지만 기본적으로 우분투 서버 설치의 일부는 아닙니다.

따라서 소프트웨어 센터의 일반적인 동작은 다음과 같이 간단하게 호출 할 수 software-center있다는 것입니다. 당시에는 인증하라는 메시지가 표시되지 않지만 소프트웨어를 설치하거나 제거하라는 메시지가 표시되면 그래픽으로 인증하라는 메시지가 표시됩니다.

시스템이 GUI없이 Ubuntu Server 시스템으로 시작한 다음 GUI를 설치 한 것처럼 사용자의 설명에서 들립니다. 아마 policykit-1policykit-1 설치policykit-1-그놈policykit-1-gnome 설치 패키지가 설치되지 않았습니다. polkit을 설치하면 소프트웨어 센터 및 기타 유틸리티에서 작동하기 시작합니다.

sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome

그런 다음 다음을 실행할 수 있어야합니다.

software-center

또는 설치 한 데스크탑 환경에서 제공하는대로 소프트웨어 센터를 그래픽으로 선택하십시오.

경우 당신이 완전한 기능을 우분투 데스크탑 시스템을 원하는, 당신이에 시스템을 켜려고 우분투의 어떤 "맛"에 대한 메타 패키지를 설치하는 것이 좋습니다. 기본적으로 일반 Ubuntu 데스크탑 시스템을 원하면 ubuntu-desktop을우분투 데스크탑 설치 설치하십시오.

sudo apt-get update
sudo apt-get install ubuntu-desktop

이것은 서버 시스템에보다 최소한의 GUI를 설치하는 것과 같이 폴킷이없는 것과 같은 다양한 간격을 메워야합니다. 반면에 최소한의 GUI를 선호한다면 해당 polkit 패키지를 설치하면됩니다.

자세한 내용 은 GUI로 Ubuntu Server를 어떻게 실행합니까?를 참조하십시오 .

sudo 그래픽 인증.

실제로 루트로 명령을 실행해야하지만 그래픽 인증 대화 상자가 표시되면 gksudo( 또는gksu )를 찾으십시오 . 이것은 gksugksu 설치 패키지에 의해 제공됩니다 . 의 그래픽 프론트 엔드입니다 sudo.

일반적으로 gksudo그래픽 응용 프로그램을 루트 (또는 사용자를 시작한 사용자 이외의 다른 사용자)로 실행하는 데 사용됩니다. 그러나이 명령을 사용하여 그래픽이 아닌 명령을 실행할 수도 있습니다 sudo.

gksudo터미널에서 실행할 수 있지만 반드시 할 필요는 없습니다. 당신은에서 실행할 수 Alt+ F2(실행 명령) 대화 상자 나에 넣어 Exec=라인 .desktop파일 (또는 다른 방법 중 하나를 사용하면 그래픽 프로그램을 실행).

gksudo그래픽 응용 프로그램 sudo ...위치 와 같은 명령 ...은 실제로 루트 사용자가 아닌 사용자의 응용 프로그램 별 구성을 손상시킬 수 있으므로 터미널에서 그래픽 응용 프로그램을 실행하는 경우에도 루트로 그래픽 응용 프로그램을 실행 하는 것을 고려해야 합니다. (다행스럽게도 이것은 고칠 수 있습니다.) sudo gedit특히 악명 높습니다.

sudo그래픽 응용 프로그램 의 문제와 그 대신 수행 할 작업 에 대한 자세한 내용 은 다음을 참조하십시오.

비 그래픽 명령을위한 폴킷 기반 그래픽 방식도 있습니다.

gksudo그래픽 및 비 그래픽 프로그램을 모두 실행하는 데 적합합니다. 아마 그걸 사용해야합니다.

그러나 대안, 대신 폴킷를 사용하여 sudo만 일하는 비 그래픽 프로그램입니다 pkexec.

예를 들어 당신이 실행하는 경우 pkexec touch /root/foo.txt, 당신은 그래픽 인증 대화 상자가 표시됩니다, 인증이 성공하면, touch /root/foo.txt생성 (실행 또는 담수화 ) foo.txt/root폴더.

  • pkexec그래픽 대화 상자를 만들 수없는 경우 터미널이 필요한 비 그래픽 대화 상자를 사용합니다. 그러나 그래픽 쉘 또는 데스크탑 환경에서 제공하는 기능을 통해 실행하는 경우에는 발생하지 않을 수 있습니다.
  • 그래픽 pkexec아닌 프로그램 에서만 작동하는 이유는 무엇 입니까? 실제로 그래픽 프로그램도 실행하지만, 폴킷이이를 허용하도록 특별히 구성된 경우에만 가능합니다. 참조 man pkexec(및 스크린 샷 업스트림 버전 ) 이 대답 하고 그 답변을 몇 가지 세부 사항을 위해, 당신이 경우에있는 거 관심.

sudovs. polkit (일부 기술적 세부 사항, 관심있는 경우에만)

새로운 gksu/는 gksudo대신 폴킷를 사용하는 sudo작업을 수행하는 이 버전은 널리 채택되지 않은 불구하고. 나는 주로 추천을 가져올 소스 코드 파일을 사이에 중요한 차이점을 설명합니다 (구스타보 노 로냐 실바에 의해 작성) 및 폴킷을. 간단히 인용하면 :READMEsudo

PolicyKit은 사용자가 자신을 인증하고 응용 프로그램이 인증 및 권한 부여 정보를 확인할 수있는 기능을 제공하여 더 높은 권한이 필요한 응용 프로그램의 문제를 해결합니다. 응용 프로그램은 특권이있는 모든 작업이 특권이없는 코드에 의해 명령되는 (바람직하게는) 작은 D- 버스 서비스에 의해 수행되는 방식으로 구성되어야합니다. 수행되는 모든 "조치"에는 적절한 권한이 필요하며 이는 Policykit을 통해 처리됩니다.

4. 왜 gksu를 유지 하는가?

따라서 응용 프로그램을 더 이상 권한있는 사용자로 실행할 필요가없고 PolicyKit의 인증 에이전트가 사용자 인증을 수행하므로 이는 본질적으로 gksu를 불필요하게 만듭니다. 그러나이 새로운 구조를 채택하려면 응용 프로그램을 리팩터링해야하며, 원하는 경우 실제로 루트로 프로그램을 실행하는 경우가 있습니다.

이 문제는 내가 생각하는 상황에 기초합니다.

  • Software Center는 권한 상승을 위해 폴킷을 사용하도록 설계되었으므로 특정 조치 만 루트로 수행해야합니다. 이를 위해 시스템에 없거나 손상된 폴킷이 필요합니다.
  • polkit을 사용하도록 설계되었으므로 소프트웨어 센터를 루트로 시작하기위한 사전 작성된 실행기가 없습니다. polkit은 대부분의 경우 그래픽 관리 도구를 루트로 실행할 필요가 없습니다.
  • 그러나 때로는 루트로 그래픽 프로그램을 실행해야 할 때가 있습니다. 이 경우 gksu/ 를 사용할 수 있습니다 gksudo.
    (... 결국 무대 뒤에서 polkit을 사용할 수 있지만 gksudo현재 우분투에는을 사용하는 전통적인 것이 sudo있습니다.)

1
안녕하세요 Eliah, 예, GUI가없는 서버 였고 방금 우분투 GUI를 시험해 보았습니다. 정책 키트가 설치되어 있는지 확실하지 않은 sudo apt-get install ubuntu-desktop 명령을 실행했습니다. 어쨌든 설치하려고합니다. 현재 12.04에서 14.04로 업그레이드 중입니다.
Sean

루트 (비 루트)로 정상적으로 실행하려는 GUI 응용 프로그램이 있지만 루트가 소유 한 직렬 포트에서 읽어야하는 상황이 발생했습니다. 이 프로그램에 단일 권한을 부여 할 수 없다는 것은 실제로 성가신 일입니다 (즉, 전체 객체 기능 시스템을 원합니다).
CMCDragonkai

3
gksuUbuntu 18.04에서 더 이상 사용되지 않고 삭제되지 않았습니다.
Nathan F.

5

편리한 방법은 .desktopGUI (gksu)를 통해 비밀번호를 묻는 전용 파일 을 만들 거나 기존 파일에 명령을 추가하는 것입니다. 아래 예에서는 sudo 권한으로 Gedit 및 Software Center를 실행하는 명령을 Gedit 실행기에 추가합니다. 당신은 할 필요가 gksu이 설정을 사용하기 위해 설치 :sudo apt-get install gksu

  1. Gedit .desktop file in/ usr / share / applications / to~ / .local / share / applications`를 복사하십시오 :

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    

    편집 할 수 있도록 엽니 다 (열린 gedit 창으로 드래그)

  2. 행을 찾으십시오. Actions = Window; Document;

  3. 명령 이름을 행에 추가하십시오 (이 이름은 인터페이스에 표시되는 이름이 아니며 파일의 내부 참조 용으로 만 사용됨)

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. 파일 맨 아래에 해당 섹션을 추가하십시오.

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
  5. 파일을 닫고 실행기로 드래그하십시오

이제 sudo 권한으로 gedit 및 Software Center를 실행할 수 있습니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


과연. 나는 이의가 없다. USC에 대해 언급 한 이유는이 질문의 주요 부분이 서버 설치에서 생성 된 시스템 일반적인 Ubuntu 데스크톱 시스템처럼 작동하여 관리 작업을위한 그래픽 인증과 관련 하여 OP가 어떻게 시스템 작동 시킬 수 있는지에 대한 것입니다. 내 대답은 그것에 집중하고 프로그램을 루트로 그래픽으로 실행하는 일반 사항을 설명합니다. 그렇게 할 때, gksu/ 의 역학을 뛰어 넘습니다 gksudo. 그래서 당신의 대답은 좋고 필요합니다! OS가 원하는 방식으로 작동하게 될 것이라고 생각하기 때문에 OP가 폴킷을 설치 / 수정하기를 바랍니다.
Eliah Kagan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.