信頼できない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 Cookieを使用するのはかなり面白いです。あなたはそれを使用することができますx11docker使いやすさのため:

x11docker --nxagent --exe -- yourapplication

または、次のように短縮されます。

x11docker -ne yourapplication

他のユーザーとして実行:

sudo x11docker --user someuser -ne -- yourapplication

クリップボードの共有を許可するには、x11dockerオプションを追加してください--clipboard。 nxagentはデフォルトでこれを許可しますが、x11dockerは指定しない限り無効にします。

ハードウェアアクセラレーションが必要な場合は、インストールしてxpra実行してくださいXwaylandwestonxdotool

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

nxagentを使用して設定し、クライアントのCookieを設定しないでください。

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

もう1つの可能性は、XepyrをネストされたXサーバーとして使用することです。しかし、シームレスなパターンを提供するわけではありません。

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

Xephyrのハードウェアアクセラレーションにはvirtualglvglrun

おすすめ記事