명령줄에서 gparted를 시작할 수 없는 것 같습니다. 저는 Trisquel 8(Ubuntu 16.04 기반)과 LXDE를 사용하고 있습니다. 열려고 하면 다음 오류가 발생하고 아무 일도 일어나지 않습니다.
$ sudo gparted
(gpartedbin:7820): Gtk-WARNING **: cannot open display:
그러나 그래픽 응용 프로그램 메뉴에서는 제대로 열리는 것 같습니다.
온라인으로 검색한 결과 다음과 같은 제안이 있었습니다.
xhost +localhost
그러나 이것은 도움이 되지 않았습니다. 분명히 Wayland에서 루트로 명령줄에서 gtk 응용 프로그램을 여는 데 문제가 있는 것 같습니다. 하지만 X11을 사용하고 있습니다. 이는 로컬 랩톱에서만 가능합니다. SSH나 원격 시스템은 관련되지 않습니다.
과거에는 항상 명령줄에서 gparted를 열 수 있었기 때문에 이것이 이상해 보입니다. 또한 gparted를 다시 설치해 보았지만 도움이 되지 않는 것 같습니다.
고쳐 쓰다:
meuh가 댓글에서 제안한 대로 DISPLAY=:0
/etc/environment 파일에 추가하여 sudo를 사용할 때 전달해야 합니다. 그러나 여전히 오류가 발생하지만 이제는 변경되었습니다.
$ sudo gparted
No protocol specified
(gpartedbin:5549): Gtk-WARNING **: cannot open display: :0
현재 DISPLAY 변수가 전달되는 것 같지만 "프로토콜 없음" 메시지가 무엇을 의미하는지 잘 모르겠습니다.
답변1
X에 액세스하려면 환경 변수가 필요하며 DISPLAY
설정 XAUTHORITY
에 따라 sudo가 이를 제거할 수 있습니다. 환경 변수를 검사하여 확인할 수 있습니다 sudo env
.
사용자 환경을 보호하기 위해 를 사용할 수 있습니다 sudo -E
. 여기에는 HOME
사용자 홈페이지에 대한 트랩 설정이 있으며 프로필이 잘못된 파일 권한을 얻을 수 있습니다. 그러나 이를 방지하려면 로 sudo -H
설정 하십시오 .HOME
/root
gparted로 결합하십시오.
sudo -EH gparted
필수 변수는 다음을 통해서만 설정할 수 있습니다.
sudo env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gparted
에러 메시지:
cannot open display:
DISPLAY
비어 있거나 존재하지 않음을 나타냅니다 .
no protocol specified
설정 되어 DISPLAY
유효하지만 XAUTHORITY
인증 쿠키가 설정되지 않았거나 쿠키가 유효하지 않음을 나타냅니다. 또는 xhost +SI:localuser:root
로그아웃할 때까지 X에 대한 루트 임시 액세스를 허용하십시오.
Wayland를 사용하고 액세스할 때도 WAYLAND_DISPLAY
마찬가지입니다 XDG_RUNTIME_DIR
. Wayland 루트 액세스 문제는 sudo -EH
다음을 통해 해결할 수도 있습니다. 자세한 내용과 함정은 다음을 XDG_RUNTIME_DIR
참조하세요.Wayland는 그래픽 sudo를 지원합니까?
답변2
이 문제를 해결할 수 있는 kdesudo
, gsudo
, 및 기타 몇 가지 방법이 있습니다 .sudo
(보안 검토/테스트 없이) 함께 해킹한 내용입니다.
#/bin/bash
inner() {
su - "$user" -c "xauth list" |
grep "$(echo "$display" |
cut -d ':' -f 2 |
cut -d '.' -f 1 |
sed -e s/^/:/ ) " |
xargs -n 3 xauth add &&
"$@"
}
if [ "$1" = "---innermode" ]
then
shift
user="$1"
display="$2"
shift 2
inner "$@"
else
self="$0"
sudo "${self}" ---innermode "$USER" "$DISPLAY" "$@"
fi