LINUX.ORG.RU

Ограничение доступа к буферу обмена

 ,


0

1

Дано: $programname, запущенная из-под отдельного пользователя. Она имеет доступ к буферу обмена (который по ctrl-c).
Надо: ограничить доступ $programname к буферу обмена.
Даже при ее запуске под отдельным экземпляром X-сервера, если сделать

export DISPLAY=:0
то можно получить содержимое клипбоарда любого пользователя. Проверить это можно так
xclip -o -selection clipboard
Не хотелось бы, чтобы любая программа имела возможность стырить содержимое клипбоарда, пока в нем хранится пароль, скопированный из keepassx (по умолчанию он чистится через 20 секунд после копирования).
P.S. s/$programname/skype/, например.
Единственным работающим решением представляется виртуалка со своим X-сервером, т.к. если запускать скайп в контейнере (lxc, openvz, etc.), то в итоге все равно придется делать ssh -X до контейнера, ибо как еще окошко можно будет показать...



Последнее исправление: getup (всего исправлений: 1)

А, стоп, тебе внутри одних иксов? Никак. Разве что keepassx'ом проверять, кто читает его клипборд.

Единственным работающим решением представляется виртуалка со своим X-сервером

Если хочется вкладывать серверы друг в друга, то есть Xephyr.

x3al ★★★★★
()

Конкретно с keepassx: есть же keefox, который работает с оригинальным keepass.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Так работает. Но хотелось бы все сделать в рамках одного X-сервера.
P.S. Чем больше безопасность, тем меньше удобство, это да.

getup
() автор топика
Ответ на: комментарий от getup

В рамках одного сервера не выйдет без патчей к keepassx либо написания менеджера клипборда. Выделения, включая clipboard, в иксах полностью управляются клиентами, клиент вполне может послать мусор или пустую строку при запросе из ненужного окна. Он получает эвент вида

typedef struct {
	int type;		/* SelectionRequest */
	unsigned long serial;	/* # of last request processed by server */
	Bool send_event;	/* true if this came from a SendEvent request */
	Display *display;	/* Display the event was read from */
	Window owner;
	Window requestor;
	Atom selection;
	Atom target;
	Atom property;
	Time time;
} XSelectionRequestEvent;
и может дискриминировать, расшифровав requestor.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Как вариант — X11-прокси для каждого нежелательного приложения, фильтрующее SelectionRequest().

x3al ★★★★★
()

В SELinux это хотели пилить, отмечали сложность (фактически очередное расширение протокола, требуется как минимум поддержка со стороны WM), может, допилили.

x3al ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.