
この質問を読んだ後vim を終了すると X クリップボードがクリアされるX ウィンドウのクリップボードは、選択内容が取得されたプログラムが開いている間だけ存在することがわかりました。
この動作のため、「glipper」や「parcellite」などのプログラムが存在します。
プログラムが終了するたびに X クリップボードがクリアされる場合、プログラムはどのように動作し、どのようにxclip
なるのでしょうかxsel
。
また、このようなプログラムを使用することでセキュリティ上どのような影響があるのでしょうか。たとえば、パスワードがクリップボードにコピーされた場合、このパスワードはプログラムやユーザーがアクセスできる一時ファイルに保存される可能性がありますか。
答え1
xclipboard
、 ...などのクリップボード アプリケーションがclipit
選択内容を盗み取らない限り、xsel
/ はxclip
選択内容を所有している限り、将来の選択要求を処理するためにバックグラウンド プロセスをフォークします。
$ printf test | xclip
$ ps -C xclip
PID TTY TIME CMD
14115 pts/10 00:00:00 xclip
そのxclip
プロセスは選択 (ここではプライマリ選択) の要求を処理しています。ただし、別のアプリケーションで何かを選択した場合 (またはxsel
または をxclip
再度使用して別のものを保存した場合)、そのxclip
プロセスは選択をその他のアプリケーションに譲り渡し、終了します。
$ printf test | xsel
$ ps -C xclip
PID TTY TIME CMD
$ ps -C xsel
PID TTY TIME CMD
14212 ? 00:00:00 xsel
上記、xsel
からの選択を引き継ぎましたxclip
。
特定の選択項目の所有者を確認するには、次の操作を行います。
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
int main(int argc, char* argv[])
{
Display *d = XOpenDisplay(NULL);
Window w = XGetSelectionOwner(d, XInternAtom (d, argv[1], False));
printf("0x%08x\n", w);
return 0;
}
それから:
$ make xgo LDFLAGS=-lX11
$ ./xgo PRIMARY
0x07000001
これにより、ウィンドウ ID が取得されます。その ID に対してxprop -id
または を使用できますが、 /xwininfo -id
の場合は、あまり多くの情報は取得されません。xclip
xsel
GNU/Linux ベースのシステムでは、ltrace
X ライブラリ API レベルで何が起こっているかを確認するのに役立ちます。
参照X11プロトコルのトラフィックをキャプチャするX11 プロトコル レベルで何が起こっているかを確認します。