우분투 18.04를 포함하여 많은 Linux 풍미에서 제거 된 gksu에 대한 많은 스레드를 읽었습니다. 많은 사람들이 gksu가 가증 한 것이며 어떤 사용자도 그와 같은 것을 사용할 필요가 없다고 말합니다. 내가 아는 한, 파일 편집이 아닌 루트로 실행할 수있는 두 가지 예가 있습니다.
먼저 (GUI) 명령에서 암호화 된 폴더를 연 후에 만 mysql을 시작해야합니다. 이것은 mysql 서비스를 시작하는 암호화 시스템에 의해 스크립트가 실행되는 것을 의미합니다. 루트로 수행해야하므로 시작 스크립트에서 gksu를 사용하여 암호를 묻습니다. GUI 시스템에서 다른 방법으로 서비스를 시작할 수 있습니까?
또한 우분투 시스템 백업을 루트로 실행합니다. 그렇지 않으면 많은 시스템 파일을 백업 할 수 없습니다. 따라서 데스크탑 파일은 gksu를 사용하여 백업을 시작합니다.
pkexec는 정책 파일이 필요한 복잡해 보입니다. 이것이 유일한 대안일까요? 그렇다면 왜 더 안전한가요?
비슷한 질문에 대한 다른 대답은 사람들이 gksu가 더 이상 (또는 찾기가 더 어렵다는) 지금 가지고있는 개별 문제를 다루지 않는 것 같습니다. 전문가가 아닌 사용자가 제공 한 이러한 질문은보다 자세한 답변을 통해 얻을 수 있다고 생각합니다. 나는 지금 몇 가지를 가지고 있고, 그래서 내 자신의 질문에 대답하고 싶습니다.
답변
이 명령을 찾았습니다
alias gksu='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'
아래 페이지에서 :
https://sites.google.com/site/installationubuntu/home/ubuntu-17-10/alternatives-for-gksu-and-gksudo
답변
나는 다른 곳에서 이것에 대한 답변이 있다고 알고 있지만,이 문제를 해결할 수있는 명확하고 간단한 답변을 찾지 못했습니다. 그래서 나는 많은 곳을 파고 이것을 생각해 냈습니다. 나는 왜 리눅스 커뮤니티가 단순한 데스크탑 사용자를 위해 인생을 그렇게 힘들게하기로 결정했는지 이해하지 못하지만 많은 설명을 이해하려고 노력했지만 그것은 인생입니다. 필요한 경우 터미널 창만 사용하여 거의 모든 것에 GUI를 사용합니다. sudo 옵션을 사용하여 솔루션을 말할 수있는 한 도움이되지 않습니다. 그래서 .desktop
정기적으로 사용하는 모든 작업을 수행하는 파일과 스크립트가 있습니다.
두 가지 기본 솔루션이 있습니다.
1. 재설치 gksu
이 솔루션은 지속될 수도 있고 지속되지 않을 수도 있습니다. anti-kksu 기술자는 그것을 막을 방법을 찾을 수 있습니다. 그러나 그 동안 libgksu (x64) 및 gksu (x64).deb
에서 2 개의 파일을 다운로드 하십시오 . gdebi 또는 사용하려는 설치 도구를 사용하여 libgksu2를 설치 한 다음 gksu를 설치하십시오. 이것은 나를 위해 일했습니다.
2. 사용 pkexec
(희망적으로) 장기적인 솔루션으로서, 나는 필요한 도구를 위해 pkexec를 작동시킬 수있었습니다.
-
스크립트에서 서비스를 시작합니다. gksu 또는 pkexec는 필요하지 않습니다. 그냥
start service xyz
비밀번호를 묻습니다. -
루트 파일을 편집하거나 노틸러스를 루트로 열 려면 gksu-Web Upd8 대신 pkexec를 사용하여 Gedit 및 노틸러스를 루트로 실행하는 방법을 참조하십시오 . 이것은 pkexec에 대해 두 개의 ‘polkit’파일을 제공합니다.이 파일을 사용
pkexec gedit
하면 루트 파일을 편집하는 데 포함 된 스크립트를 사용하여 노틸러스에 사용할 수 있습니다. 지침은 모두 해당 웹 페이지에 있습니다. 이제 ‘filemanager-actions’를 사용하여 gedit 또는 노틸러스를 루트로 실행하는 마우스 오른쪽 버튼 클릭 동작을 제공하고 있습니다. -
코어 시스템의 백업을 위해 루트로 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없이 달리고있다. 계속해서 노력하겠습니다…
답변
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
단일 명령을 실행하기 위해 루트 권한 만 있으면되는 기간 동안 루트 권한을 높이기 때문에 불필요하게 관리하기가 어렵습니다.
답변
sgedit
글꼴, 탭 및 확장명에 대한 사용자 기본 설정을 상속 하는 스크립트를 사용합니다 . GUI 환경에서 안정성 sudo -H gedit
대신에 사용 gksu gedit
합니다. 암호를 묻습니다.
이 sudo
사용자 계정 상속 gedit
설정을
이 예제에서 글꼴 이름, 글꼴 크기, 탭 정지, 탭을 공백으로 변환, 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
.
답변
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
컴퓨터를 재부팅하십시오.