신뢰할 수 없는 X11 클라이언트의 클립보드를 제한합니다.

신뢰할 수 없는 X11 클라이언트의 클립보드를 제한합니다.

이 블로그를 우연히 발견했습니다https://notehub.org/rp5n2특정 X11 클라이언트를 활성화하는 방법을 설명합니다.신뢰할 수 없는[1] 이로 인해 일부 X11 확장을 사용할 수 없게 됩니다. UID 분리를 사용하지 않는 한 이것만으로는 아무 가치가 없다는 것을 잘 알고 있습니다. 저는 xsudo[2]를 사용하여 크랩웨어를 실행합니다.

그러나 클라이언트는 신뢰할 수 없는 연결을 사용하는 경우에도 클립보드를 계속 모니터링할 수 있습니다. 사용자가 인 경우 crapware해당 계정으로 실행되는 프로그램은 여전히 ​​기본 선택을 모니터링할 수 있습니다. 당신은 시도:

watch -n0.5 xsudo crapware xclip -o 

보안 확장은 신뢰할 수 없는 X11 클라이언트가 키보드를 기록하거나 키 입력을 시뮬레이션하는 것을 방지하므로 확실히 유용하지만 클립보드를 스니핑하는 것은 약점입니다. 기본적으로 신뢰할 수 없는 X11 클라이언트와의 클립보드 공유를 방지하는 방법은 무엇입니까?

나는 소방서나 그런 것에는 관심이 없습니다. 나는 네임스페이스에 관심이 없습니다. UNIX 사용자 분리가 필요한 것입니다. 나는 또한 Xpra를 피하고 싶다. X11에 직접 연결하는 클라이언트에 비해 너무 느립니다. 타이핑하는 동안 실제로 지연을 느낄 수 있습니다.

[1]https://www.x.org/releases/X11R7.6/doc/xextproto/security.html

[2]

#!/bin/zsh
set -e

# Copied from https://notehub.org/rp5n2

if [[ $# -lt 1 ]]; then
    echo "Usage: $0 asuser [cmdline...]" >&2
    exit 1
fi

asuser=$1
shift

if [[ -z $DISPLAY ]]; then
    echo "DISPLAY is not set" >&2
    exit 1
fi

cookie=/tmp/.Xauthority-$DISPLAY-$asuser

if [[ ! -e $cookie ]]; then
    touch $cookie
    chmod 600 $cookie
    xauth -f $cookie generate $DISPLAY MIT-MAGIC-COOKIE-1 untrusted
    sudo chgrp $asuser $cookie
    chmod 660 $cookie
fi

export XAUTHORITY=$cookie

if [[ $# -gt 0 ]]; then
    exec sudo -u $asuser "$@"
else
    exec sudo -u $asuser -i
fi

답변1

중첩된 X 서버를 사용할 수 있습니다.NX 에이전트xpra에 비해 로컬 설정이 훨씬 빠릅니다.

nxagent단일 애플리케이션에는 연속 모드도 제공됩니다. 심리스 모드로 설정하고 클립보드를 사용하지 않고 자체 Xauthority 쿠키를 사용하는 것은 다소 흥미롭습니다. 당신은 그것을 사용할 수 있습니다x11docker사용 편의성을 위해:

x11docker --nxagent --exe -- yourapplication

또는 다음과 같이 축약됩니다.

x11docker -ne yourapplication

다른 사용자로 실행:

sudo x11docker --user someuser -ne -- yourapplication

클립보드 공유를 허용하려면 x11docker 옵션을 추가하세요 --clipboard. nxagent는 기본적으로 이를 허용하지만 x11docker는 지정하지 않는 한 이를 비활성화합니다.

하드웨어 가속이 필요한 경우 를 설치 xpra하고 실행하세요 Xwayland.westonxdotool

sudo x11docker --user someuser --xpra-xwayland --exe -- yourapplication

nxagent를 사용하여 설정하고 클라이언트에 대한 쿠키를 설정하지 마세요.

echo "nx/nx,clipboard=none:25" >/tmp/nxoptions
nxagent :25 -R -nolisten tcp -options /tmp/nxoptions
sudo -u someuser env DISPLAY=:25 yourapplication

이것은 미국 키보드에서만 작동합니다. 다른 키보드 레이아웃을 얻으려면 /tmp/nxoptions독일어 키보드 레이아웃을 변경하십시오.

echo "nx/nx,clipboard=none,keyboard=evdev/de:25" >/tmp/nxoptions

또 다른 가능성은 Xepyr을 중첩된 X 서버로 사용하는 것입니다. 하지만 원활한 패턴을 제공하지는 않습니다.

Xephyr :10
sudo -u someuser env DISPLAY=:10 openbox  # provide a window manager
sudo -u someuser env DISPLAY=:10 someapplication

Xephyr의 하드웨어 가속 에는 virtualgl.vglrun

관련 정보