
Nach dem Lesen dieser Frage überdie X-Zwischenablage wird gelöscht, wenn vim beendet wirdIch habe gelernt, dass die Zwischenablage des X-Windows nur existiert, solange das Programm, aus dem die Auswahl stammt, geöffnet bleibt.
Aufgrund dieses Verhaltens existieren Programme wie „Glipper“ und „Parcellite“.
Wenn die X-Zwischenablage jedes Mal geleert wird, wenn ein Programm beendet wird, wie sehen dann die Programme aus xclip
und wie xsel
funktionieren sie?
Und welche Sicherheitsauswirkungen hat die Verwendung solcher Programme? Wenn beispielsweise ein Passwort in die Zwischenablage kopiert wurde, könnte dieses Passwort in einer temporären Datei gespeichert werden, auf die Programme oder Benutzer zugreifen können?
Antwort1
Sofern es keine Zwischenablageanwendung wie ... gibt, xclipboard
die clipit
ihnen die Auswahl stiehlt, wird xsel
/ xclip
einen Hintergrundprozess aufspalten, um die zukünftigen Auswahlanforderungen zu verarbeiten, solange sie die Auswahl besitzen.
$ printf test | xclip
$ ps -C xclip
PID TTY TIME CMD
14115 pts/10 00:00:00 xclip
Dieser xclip
Prozess verarbeitet Anfragen für die Auswahl (hier PRIMÄRE Auswahl). Wenn Sie jedoch etwas in einer anderen Anwendung auswählen (oder xsel
oder xclip
erneut verwenden, um etwas anderes zu speichern), xclip
überlässt dieser Prozess die Auswahl dieser anderen Anwendung und wird beendet.
$ printf test | xsel
$ ps -C xclip
PID TTY TIME CMD
$ ps -C xsel
PID TTY TIME CMD
14212 ? 00:00:00 xsel
Oben xsel
wurde die Auswahl von übernommen xclip
.
Sie können herausfinden, wem eine bestimmte Auswahl gehört, indem Sie:
#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;
}
Dann:
$ make xgo LDFLAGS=-lX11
$ ./xgo PRIMARY
0x07000001
Dadurch erhalten Sie die Fenster-ID. Sie können xprop -id
oder xwininfo -id
für diese ID verwenden, aber im Fall von xclip
/ xsel
erhalten Sie nicht viele Informationen.
Auf GNU/Linux-basierten Systemen ltrace
ist es nützlich zu sehen, was auf der API-Ebene der X-Bibliothek geschieht.
Siehe auchErfassen Sie den Datenverkehr des X11-Protokollsum zu sehen, was auf der X11-Protokollebene passiert.