18.04에 gksu와 동등한 제품이 필요합니다.


23

우분투 18.04를 포함하여 많은 Linux 풍미에서 제거 된 gksu에 대한 많은 스레드를 읽었습니다. 많은 사람들이 gksu가 가증 한 것이며 어떤 사용자도 그와 같은 것을 사용할 필요가 없다고 말합니다. 내가 아는 한, 파일 편집이 아닌 루트로 실행할 수있는 두 가지 예가 있습니다.

먼저 (GUI) 명령에서 암호화 된 폴더를 연 후에 만 ​​mysql을 시작해야합니다. 이것은 mysql 서비스를 시작하는 암호화 시스템에 의해 스크립트가 실행되는 것을 의미합니다. 루트로 수행해야하므로 시작 스크립트에서 gksu를 사용하여 암호를 묻습니다. GUI 시스템에서 다른 방법으로 서비스를 시작할 수 있습니까?

또한 우분투 시스템 백업을 루트로 실행합니다. 그렇지 않으면 많은 시스템 파일을 백업 할 수 없습니다. 따라서 데스크탑 파일은 gksu를 사용하여 백업을 시작합니다.

pkexec는 정책 파일이 필요한 복잡해 보입니다. 이것이 유일한 대안일까요? 그렇다면 왜 더 안전한가요?

비슷한 질문에 대한 다른 대답은 사람들이 gksu가 더 이상 (또는 찾기가 더 어렵다는) 지금 가지고있는 개별 문제를 다루지 않는 것 같습니다. 전문가가 아닌 사용자가 제공 한 이러한 질문은보다 자세한 답변을 통해 얻을 수 있다고 생각합니다. 나는 지금 몇 가지를 가지고 있고, 그래서 내 자신의 질문에 대답하고 싶습니다.


pkexec대신 당신을 위해 일 합니까 gksu?
토마스 워드

@karel은 그 게시물 에 '대체'가 명확하게 명시되어 있지는 않지만 동의했습니다 pkexec. (당신은 그것을
토마스 워드

2
또한 sudo -H GUI-programWayland에이 링크가 있으면 유용 할 수 있습니다. GUI 도구가있는 경우
sudodus

3
이것은 논란의 여지가 있지만, 간단히 말해서 그래픽 응용 프로그램을 루트로 실행하는 것은 보안 위험입니다. 당신과 다른 많은 사람들이 이것에 동의하지 않을 수도 있지만, 루트로 그래픽 응용 프로그램을 실행하는 것은 우분투와 많은 배포판에서 권장하지 않습니다. 우분투는 대체 솔루션, pkexec 및 기타 정책을 작성하는 중입니다. 버그 보고서를 제출할 수 있으며 개발자는 패키지 관리자와 같은 프로그램에 대한 솔루션을 개발하게됩니다. X와 Wayland를 포함하므로 복잡합니다. 그래픽이 아닌 앱을 사용하거나 직접 작성하십시오. 암호화에는 GUI가 필요하지 않음
Panther

암호화 된 폴더를 마운트하는 GUI를 제공하는 gnome-encfs-manager를 사용합니다. 드라이브가 마운트 될 때 스크립트가 실행되도록합니다. 해당 스크립트에서 mysql을 시작해야합니다. 다른 방법으로 할 수 있습니까? 웨이 랜드의 경우 시냅스 또는 갈라진 GUI를 허용하지 않는 것은 일반 가정용 데스크톱 사용자의 관점에서 말도 안됩니다. 그들은 귀중합니다. 아무도 사용하기를 원하지 않는 시스템은 매우 안전 할 수 있습니다. 균형이 있으며이 특별한 경우 (wayland) 사용자가 옳 아야합니다.
pasti

답변:



8

나는 다른 곳에서 이것에 대한 답변이 있다고 알고 있지만,이 문제를 해결할 수있는 명확하고 간단한 답변을 찾지 못했습니다. 그래서 나는 많은 곳을 파고 이것을 생각해 냈습니다. 나는 왜 리눅스 커뮤니티가 단순한 데스크탑 사용자를 위해 인생을 그렇게 힘들게하기로 결정했는지 이해하지 못하지만 많은 설명을 이해하려고 노력했지만 그것은 인생입니다. 필요한 경우 터미널 창만 사용하여 거의 모든 것에 GUI를 사용합니다. sudo 옵션을 사용하여 솔루션을 말할 수있는 한 도움이되지 않습니다. 그래서 .desktop정기적으로 사용하는 모든 작업을 수행하는 파일과 스크립트가 있습니다.

두 가지 기본 솔루션이 있습니다.

1. 재설치 gksu

이 솔루션은 지속될 수도 있고 지속되지 않을 수도 있습니다. anti-kksu 기술자는 그것을 막을 방법을 찾을 수 있습니다. 그러나 그 동안 libgksu (x64)gksu (x64).deb 에서 2 개의 파일을 다운로드 하십시오 . gdebi 또는 사용하려는 설치 도구를 사용하여 libgksu2를 설치 한 다음 gksu를 설치하십시오. 이것은 나를 위해 일했습니다.

2. 사용 pkexec

(희망적으로) 장기적인 솔루션으로서, 나는 필요한 도구를 위해 pkexec를 작동시킬 수있었습니다.

  1. 스크립트에서 서비스를 시작합니다. gksu 또는 pkexec는 필요하지 않습니다. 그냥 start service xyz비밀번호를 묻습니다.

  2. 루트 파일을 편집하거나 노틸러스를 루트로 열 려면 gksu-Web Upd8 대신 pkexec를 사용하여 Gedit 및 노틸러스를 루트로 실행하는 방법을 참조하십시오 . 이것은 pkexec에 대해 두 개의 'polkit'파일을 제공합니다.이 파일을 사용 pkexec gedit하면 루트 파일을 편집하는 데 포함 된 스크립트를 사용하여 노틸러스에 사용할 수 있습니다. 지침은 모두 해당 웹 페이지에 있습니다. 이제 'filemanager-actions'를 사용하여 gedit 또는 노틸러스를 루트로 실행하는 마우스 오른쪽 버튼 클릭 동작을 제공하고 있습니다.

  3. 코어 시스템의 백업을 위해 루트로 deja-dup을 실행합니다. 루트 액세스가 필요하지 않은 잦은 백업을 /home위해 제외하고는이 /home작업을 자주 수행하지 않습니다. 이 작업을 수행하려면 gedit에 2 단계에서 사용한 파일의 사본을 가져 와서 deja-dup을 위해 편집했습니다. 내용을 이해하지 못하지만 pkexec backup.desktop 파일에서 시작된 스크립트를 사용하여 백업 및 파일 복원 모두에서 작동 합니다. 이 새로운 파일을 다음에 추가했습니다 /usr/share/polkit-1/actions.

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
    
    <policyconfig>
      <icon_name>deja-dup</icon_name>
    
      <action id="org.gnome.DejaDup">
        <description gettext-domain="deja-dup">Backup</description>
        <message gettext-domain="deja-dup">Privileges are required to backup system files</message>
        <defaults>
        <allow_any>no</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
         </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/deja-dup</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
      </action>
    
    </policyconfig>
    

    이 디렉토리에는 파일 복원에 도움이된다고 주장하는 또 다른 deja-dup 파일이 있지만 작동하지 못했습니다. 이 새 파일은와 같은 고유 한 이름을 가져야합니다 org.gnome.DejaDupNew.policy.

나는 지금 gksu없이 달리고있다. 계속해서 노력하겠습니다…


pkexec deja-dup설명대로 파일을 추가 한 후 백업을 시작하는 명령은 저 를 위한 것입니다. 대화 상자에서 설정을 먼저 선택할 수 있습니다.
wbloos

정책 파일을 넣는 /usr/share/polkit-1/actions것은 실제로 높은 pkexec권한으로 데스크탑 런처를 만드는 방법이었습니다 . 여기 또 다른 예가 있습니다.
Sroo Stroobandt

4

Nautilus Admin ( nautilus-admin )은 Nautilus 파일 관리자를위한 간단한 Python 확장으로 마우스 오른쪽 버튼 메뉴에 몇 가지 관리 작업을 추가합니다.

  • 관리자로 열기 : 관리자 (루트) 권한으로 실행되는 새 노틸러스 창에서 폴더를 엽니 다.
  • 관리자로 편집 : 관리자 (루트) 권한으로 실행되는 Gedit 창에서 파일을 엽니 다.

현재 지원되는 모든 Ubuntu 버전에 Nautilus Admin을 설치하려면 터미널을 열고 다음을 입력하십시오.

sudo apt install nautilus-admin

파일 및 Gedit 이외의 다른 응용 프로그램에 대해 18.04의 gksu에 대한 모든 대안을 테스트했으며 가장 일관되게 작동하는 것으로 보입니다.

sudo -H appname &> / dev / null

pkexec은 더 높은 보안을 제공하기 때문에 작동 할 때 gksu를 대체하는 가장 좋은 방법이지만 다른 앱 (예 : Gedit에서는 작동하지 않음)에서 매우 일치하지 않으며 일부 앱과 충돌 할 수 있습니다. sudo -i단일 명령을 실행하기 위해 루트 권한 만 있으면되는 기간 동안 루트 권한을 높이기 때문에 불필요하게 관리하기가 어렵습니다.


3

sgedit글꼴, 탭 및 확장명에 대한 사용자 기본 설정을 상속 하는 스크립트를 사용합니다 . GUI 환경에서 안정성 sudo -H gedit대신에 사용 gksu gedit합니다. 암호를 묻습니다.

sudo사용자 계정 상속 gedit설정을

sgedit 80 열 오른쪽 슬라이더 .gif

이 예제에서 글꼴 이름, 글꼴 크기, 탭 정지, 탭을 공백으로 변환, 80 열 강조 표시 및 오른쪽 축소판 슬라이더 막대에 대한 사용자 설정이에 의해 상속되었습니다 sudo.

정기적으로 sudo -H gedit이러한 구성 설정을 만들거나 저장할 수 없습니다. 아래 스크립트를 사용 sgedit하면 설정이 사용자 계정에서 상속됩니다.

이 스크립트는 또한 " gksu기본적으로 설치되어 있지 않으며 설치 pkexec가 어렵습니다 "및 " 설치하기 어렵다"문제를 해결합니다.


배경

나는 몇 년 동안 같은 문제로 괴로워했습니다. 이번 주말 프로젝트는 sgedit스크립트 를 작성하는 것이 었습니다 .

  • 를 사용하여 전화 sgedit filename1 filename2...
  • 탭 중지, 글꼴, 줄 바꿈 등에 대한 사용자의 gedit 설정을 가져옵니다.
  • 이르게는 다음의 제품에 sudo -H루트 권한을 얻는 동안 파일 소유권을 보존합니다.
  • 마지막 sudo가 시간 초과 된 경우 암호를 요청합니다.
  • sudo의 gedit 설정을 가져옵니다
  • 사용자와 sudo gedit 설정의 차이점을 비교합니다
  • gsettings set차이점 만 실행 합니다 (174 개 set명령을 12 개 이하로 줄입니다. 다음 번에는 한두 번의 변경 만 수행하지만 대개는 아무 것도 실행하지 않습니다.
  • 터미널 프롬프트가 즉시 다시 나타나도록 gedit를 백그라운드 작업으로 호출합니다.

배쉬 스크립트 sgedit

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history |
    grep -v docinfo |
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {
    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history |
        grep -v docinfo |
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
    nohup gedit $@ &>/dev/null &
}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

가정

위의 bash 스크립트를이라는 새 파일에 복사하십시오 sgedit. $HOME/bin디렉토리에 배치하는 것이 좋습니다 ( 예 :) /home/YOURNAME/bin. 먼저 디렉토리를 작성해야 할 수도 있습니다.

다음을 사용하여 파일을 실행 파일로 표시하십시오.

chmod a+x ~/sgedit

참고 ~는 바로 가기입니다 /home/YOURNAME.


0

Ubuntu 18.04 : 일부 설치 프로그램 및 다른 설치 프로그램은 gksudo 또는 gksu가 같은 이름으로 사용 가능해야합니다. 이 작업을 수행하려면

gnome 버전을 설치하십시오 ssh-askpass. 이를 사용하지 않으면 비밀번호 대화 상자가 다른 창 뒤에 숨겨 질 수 있습니다.

sudo apt-get install ssh-askpass-gnome

새 파일 만들기 my-gksudo.sh:

sudo -H gedit /etc/profile.d/my-gksudo.sh

파일 내용 :

export SUDO_ASKPASS=/usr/bin/ssh-askpass

동일한 컨텐츠로 gksudo 및 gksu 파일을 새로 작성하십시오.

sudo -H gedit /usr/bin/gksudo

sudo -H gedit /usr/bin/gksu

두 파일 내용 :

sudo -A $@

gksudo 및 gksu를 실행 가능하게 만드십시오.

sudo chmod +x /usr/bin/gksudo

sudo chmod +x /usr/bin/gksu

컴퓨터를 재부팅하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.