Re: Запуск гуевых приложений в контейнере (was: Debian 7 и intel hd graphics 500)

2020-06-03 Пенетрантность Victor Wagner
В Wed, 03 Jun 2020 10:29:54 +0300
Dmitry Alexandrov <321...@gmail.com> пишет:

> Stanislav Vlasov  wrote:
> > Честно говоря, не в курсе, можно ли в контейнерах штатным образом
> > запускать гуёвый софт с отображением его окон на локальных иксах
> > без всяких ssh -X в контейнер  
> 
> Да, естественно, ибо с каких это пор Иксам стали требоваться всякие
> костыли типа ssh для отрисовки окон на другой машине?
> 
> > простым конфигурированием контейнера.  
> 
> Скорее уж хоста.  А конкретно:

Вот лучше контейнера. Ибо безопаснее будет в нашу параноидальную эпоху.

> 1. Включить ‘-listen tcp’ у Икс-сервера.  Как — см. в документации
> экранного диспетчера, который его собственно по-умолчанию и отключает.

Ага, а потом еще убедиться, что это надежно заткнуто файрволлом и
пустят туда только из контейнера, а не изо всей локальной сети.

Лучше уж как ниже описано смонтировать в контейнер юникс-домен сокеты из
/tmp/.X11-unix

 
> 2. разрешить к нужной инстанции доступ для нужного контейнера:
> 
>   $ xhost +inet:192.168.122.11
>   $ xhost +inet6:fd34:fe56:7891:2f3a::11

Ой, не рекомендую использовать xhost.  В принципе, в сочетании с
предыдущим советом достаточно просто ~/.Xauthority в контейнер
скопировать. Потому что при этом значение DISPLAY внутри и снаружи
будет совпадать, и магическое печенье подойдет.


> Другое дело, что толку-то?  Одних Иксов далеко не всякому гую
> достаточно.  Доступа к отрисовке на GPU Иксы же сами по себе не дают.
> 
Вот-вот
 
> Если ее надо, то придется проламывать стенку контейнера.  На примере
> LXC (строчки из configʼа):
> 
>   lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none
> bind,optional,create=dir,ro lxc.cgroup.devices.allow = c 226:* rwm
>   lxc.mount.entry = /dev/dri dev/dri none
> bind,optional,create=dir lxc.cgroup.devices.allow = c 116:* rwm
>   lxc.mount.entry = /dev/snd dev/snd none
> bind,optional,create=dir
> 
> Первая строчка заменяет сетевую прозрачность Иксов, четвертая-пятая —
> Пульсы, ну а вторая-третья — это про тот самый доступ к графике.  226
> и 116 — это мажорные номера устройств, см. ‘$ ls -l /dev/dri/’ в
> колонке размера.
> 
> Авторизация на Икс-сервере будет по UIDʼу, так что если не совпадают,

А вот не стоит делать так, чтобы не совпадали. Есть куча разных причин
по которым лучше uid-ы синхронизировать, и это отнюдь не толко доступ к
X-ам. Это еще по крайней мере кардинально упрощает обмен файлами с
контейнером. 
А то опять окажется что ssh проще.

-- 



Re: Запуск гуевых приложений в контейнере (was: Debian 7 и intel hd graphics 500)

2020-06-03 Пенетрантность Stanislav Vlasov
03.06.2020, Dmitry Alexandrov<321...@gmail.com> написал(а):
>> Честно говоря, не в курсе, можно ли в контейнерах штатным образом
>> запускать гуёвый софт с отображением его окон на локальных иксах без
>> всяких ssh -X в контейнер
>
> Да, естественно, ибо с каких это пор Иксам стали требоваться всякие костыли
> типа ssh для отрисовки окон на другой машине?

Ключевые слова - авторизация и шифрование. Ну и меньше геморроя -
сравните манипуляции с опциями запуска иксов, потенциально открывающие
дыру для всех + xhost и простой запуск ssh -X

>> простым конфигурированием контейнера.
>
> Скорее уж хоста.  А конкретно:
>
> 1. Включить ‘-listen tcp’ у Икс-сервера.  Как — см. в документации экранного
> диспетчера, который его собственно по-умолчанию и отключает.
>
> 2. разрешить к нужной инстанции доступ для нужного контейнера:
>
>   $ xhost +inet:192.168.122.11
>   $ xhost +inet6:fd34:fe56:7891:2f3a::11

Сразу нет, я как-то не готов давать доступ любому приложению без хотя бы XAUTH.

> Единственное, я как-то так и не понял, работает ли это с link-local
> адресами, которые fe80::/10.  Кто понял, подскажите.

А чем этот адрес от других ipv6 так сильно отличается в этом месте? По
ssh ходить на него точно можно.

> Другое дело, что толку-то?  Одних Иксов далеко не всякому гую достаточно.
> Доступа к отрисовке на GPU Иксы же сами по себе не дают.

Это совершенно другой вопрос - игры и игроподобные вещи желательно
вообще в отдельном компе, вероятно.

> Кто знает, подскажите.

Скорее, поставить права на .Xauthority (вероятно, через setfacl) +
пробрасывать данный файл тоже вместе с установкой переменной
окружения.


-- 
Stanislav

P.S. Ваше сообщение упало в спам почему-то.


Re: Запуск гуевых приложений в контейнере (was: Debian 7 и intel hd graphics 500)

2020-06-03 Пенетрантность Dmitry Alexandrov
Stanislav Vlasov  wrote:
> Честно говоря, не в курсе, можно ли в контейнерах штатным образом запускать 
> гуёвый софт с отображением его окон на локальных иксах без всяких ssh -X в 
> контейнер

Да, естественно, ибо с каких это пор Иксам стали требоваться всякие костыли 
типа ssh для отрисовки окон на другой машине?

> простым конфигурированием контейнера.

Скорее уж хоста.  А конкретно:

1. Включить ‘-listen tcp’ у Икс-сервера.  Как — см. в документации экранного 
диспетчера, который его собственно по-умолчанию и отключает.

2. разрешить к нужной инстанции доступ для нужного контейнера:

$ xhost +inet:192.168.122.11
$ xhost +inet6:fd34:fe56:7891:2f3a::11

Единственное, я как-то так и не понял, работает ли это с link-local адресами, 
которые fe80::/10.  Кто понял, подскажите.


Короче говоря, от того, что у вас за система контейнеризации, все это не 
зависит никак, внутри только ‘DISPLAY=_gateway:0’ (ну или что надо) 
экспортировать.

Другое дело, что толку-то?  Одних Иксов далеко не всякому гую достаточно.  
Доступа к отрисовке на GPU Иксы же сами по себе не дают.


Если ее надо, то придется проламывать стенку контейнера.  На примере LXC 
(строчки из configʼа):

lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none 
bind,optional,create=dir,ro
lxc.cgroup.devices.allow = c 226:* rwm
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.cgroup.devices.allow = c 116:* rwm
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir

Первая строчка заменяет сетевую прозрачность Иксов, четвертая-пятая — Пульсы, 
ну а вторая-третья — это про тот самый доступ к графике.  226 и 116 — это 
мажорные номера устройств, см. ‘$ ls -l /dev/dri/’ в колонке размера.

Авторизация на Икс-сервере будет по UIDʼу, так что если не совпадают, то надо 
явно разрешить, причем я не знаю, как это сделать не давая UIDʼу имя на хосте, 
чтобы мочь приказать:

$ xhost +si:localuser:stanislav

Кто знает, подскажите.


signature.asc
Description: PGP signature