В данной статье рассматривается настройка компьютера под управлением Astra Linux для одновременной работы нескольких  пользователей в режиме "multiseat". В качестве примера рассматривается настройка для работы двух пользователей, настройка для большего количества пользователей выполняется аналогично, главное, чтобы к компьютеру был подключено всё необходимое для этого оборудование.


Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Common Edition 2.12

Для работы в режиме multiseat  необходимо переключить менеджер графических дисплеев fly-dm на работу от имени суперпользователя (root).

Использование программным обеспечением прав суперпользователя и функционирование программного обеспечения от имени суперпользователя относятся к привилегиям, потенциально влияющим на систему защиты информационной системы. 
В документации на информационную систему должно быть указано о наличии, порядке и целях применения программного обеспечения, использующего указанные привилегии, а также приведен порядок его настройки (для чего могут быть использованы материалы настоящей методики). 

Термином multiseat обозначается физический компьютер, оборудованный для одновременной работы более чем одного пользователя в графической сессии, с прямым подключением пользовательских устройств ввода (клавиатуры, манипуляторы типа "мышь") и вывода (мониторы) к этому компьютеру.

Требования к оборудованию

Для реализации работы в режиме multiseat каждый пользователь должен иметь свои клавиатуру, мышь и монитор. Каждый монитор при этом должен быть подключен к графическому выводу отдельной видеокарты. 

В данной инструкции используется компьютер со следующими характеристиками:

  • Установлена ОС Astra Linux Special Edition с установленными обновлениями безопасности;
  • Имеется встроенная видеокарта Intel;
  • Установлена дополнительная дискретная видеокарта Nvidia GeForce 1060;
  • Подключены две USB клавиатуры и две USB мыши.

Графический менеджер рабочих мест fly-admin-multiseat

Графический менеджер рабочих мест fly-admin-multiseat доступен в Astra Linux Special Edition x.7

Графический менеджер рабочих мест fly-admin-multiseat может быть запущен через графическое меню: "Пуск" - "Панель управления" - "Система" - "Мультитерминальный режим". После запуска fly-admin-multiseat автоматически определяет наличи оборудования:


и позволяет в графическом режиме создать дополнительное рабочее место:


и назначить созданному рабочему месту оборудование:

Назначение устройств

Для каждого рабочего места (seat) необходимо назначить свои устройства ввода и вывода.

Определить имеющиеся устройства можно командами:

lspci

и

lsusb

Устройства ввода/вывода назначаются рабочим местам командой loginctl. С помощью этой же команды можно проверить список рабочих мест:

sudo loginctl list-seats

и подключенные к рабочему месту устройства:

sudo loginctl seat-status seat0

Пример вывода команды loginctl (для наглядности разными цветами выделены сообщения про дополнительные видеокарту, клавиатуру и мышь):

sudo loginctl seat-status seat0
seat0
         Devices:
                  ├─/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
                  │ input:input1 "Power Button"
                  ├─/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
                  │ input:input0 "Power Button"
                  ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
                  │ [MASTER] drm:card0
                  │ ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0/card0-DVI-I-1
                  │ │ [MASTER] drm:card0-DVI-I-1
                  │ ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0/card0-HDMI-A-1
                  │ │ [MASTER] drm:card0-HDMI-A-1
                  │ └─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0/card0-VGA-1
                  │   [MASTER] drm:card0-VGA-1
                  ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/renderD128
                  │ drm:renderD128
                  ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
                  │ graphics:fb0 "nouveaudrmfb"
                  ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1
                  │ sound:card1 "NVidia"
                  │ ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input23
                  │ │ input:input23 "HDA NVidia HDMI/DP,pcm=3"
                  │ ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input24
                  │ │ input:input24 "HDA NVidia HDMI/DP,pcm=7"
                  │ ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input25
                  │ │ input:input25 "HDA NVidia HDMI/DP,pcm=8"
                  │ └─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input26
                  │   input:input26 "HDA NVidia HDMI/DP,pcm=9"
                  ├─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1
                  │ [MASTER] drm:card1
                  │ ├─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1/card1-DVI-I-2
                  │ │ [MASTER] drm:card1-DVI-I-2
                  │ └─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1/card1-DVI-I-3
                  │   [MASTER] drm:card1-DVI-I-3
                  ├─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/renderD129
                  │ drm:renderD129
                  ├─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/graphics/fb1
                  │ graphics:fb1 "nouveaudrmfb"
                  ├─/sys/devices/pci0000:00/0000:00:1a.0/usb3
                  │ usb:usb3
                  ├─/sys/devices/pci0000:00/0000:00:1a.1/usb4
                  │ usb:usb4
                  ├─/sys/devices/pci0000:00/0000:00:1a.2/usb5
                  │ usb:usb5
                  ├─/sys/devices/pci0000:00/0000:00:1a.7/usb1
                  │ usb:usb1
                  │ └─/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5
                  │   usb:1-5
                  │   ├─/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input12
                  │   │ input:input12 "Telink SVEN WIRELESS MOUSE Mouse"
                  │   ├─/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input13
                  │   │ input:input13 "Telink SVEN WIRELESS MOUSE Consumer Control"
                  │   └─/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input14
                  │     input:input14 "Telink SVEN WIRELESS MOUSE System Control"
                  ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0
                  │ sound:card0 "Intel"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input15
                  │ │ input:input15 "HDA Intel Front Mic"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input16
                  │ │ input:input16 "HDA Intel Rear Mic"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input17
                  │ │ input:input17 "HDA Intel Line"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input18
                  │ │ input:input18 "HDA Intel Line Out Front"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input19
                  │ │ input:input19 "HDA Intel Line Out Surround"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input20
                  │ │ input:input20 "HDA Intel Line Out CLFE"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input21
                  │ │ input:input21 "HDA Intel Line Out Side"
                  │ └─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input22
                  │   input:input22 "HDA Intel Front Headphone"
                  ├─/sys/devices/pci0000:00/0000:00:1d.0/usb6
                  │ usb:usb6
                  ├─/sys/devices/pci0000:00/0000:00:1d.1/usb7
                  │ usb:usb7
                  │ ├─/sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.0/0003:C0F4:01B0.0001/input/input5
                  │ │ input:input5 "USB usb keyboard"
                  │ ├─/sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.1/0003:C0F4:01B0.0002/input/input6
                  │ │ input:input6 "USB usb keyboard Consumer Control"
                  │ └─/sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.1/0003:C0F4:01B0.0002/input/input7
                  │   input:input7 "USB usb keyboard System Control"
                  ├─/sys/devices/pci0000:00/0000:00:1d.2/usb8
                  │ usb:usb8
                  │ ├─/sys/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/0003:10D5:0116.0003/input/input8
                  │ │ input:input8 "M02 1.6"
                  │ ├─/sys/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.1/0003:10D5:0116.0004/input/input10
                  │ │ input:input10 "M02 1.6 System Control"
                  │ ├─/sys/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.1/0003:10D5:0116.0004/input/input11
                  │ │ input:input11 "M02 1.6 Consumer Control"
                  │ └─/sys/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.1/0003:10D5:0116.0004/input/input9
                  │   input:input9 "M02 1.6 Mouse"
                  ├─/sys/devices/pci0000:00/0000:00:1d.7/usb2
                  │ usb:usb2
                  ├─/sys/devices/platform/vhci_hcd.0/usb10
                  │ usb:usb10
                  ├─/sys/devices/platform/vhci_hcd.0/usb9
                  │ usb:usb9
                  ├─/sys/devices/virtual/misc/kvm
                  │ misc:kvm
                  └─/sys/devices/virtual/misc/rfkill
                    misc:rfkill

В примере выше видно, что физические устройства быть могут представлены комплектом логических устройств. Если комлект иерархический, то к рабочему месту следует привязывать корневое устройство. Если комлект неиерархический, то привязывать следует все устройства. При этом может потребоваться выполнить команду привязки несколько раз.

Внимание

Существование рабочего места определяется привязкой к нему видеокарты. Если отвязать видеокарту от рабочего места (привязав к другому рабочему месту), то все устройства привязанные к рабочему месту, оставшемуся без видеокары, станут недоступны. Чтобы вернуть доступ к таким устройствам нужно повторно привязать к рабочему месту видеокарту, и перепривязать устройства к другому рабочему месту.

Обычно к дополнительным рабочим местам привязываются видеокарты, имеющие ненулевые номера, т.е. видеокарта card0 обычно закреплена за рабочим местом, используемым по-умолчанию (рабочее место seat0). Однако перед выполнением привязки видеокарты следует убедиться, что карта с номером 0 действительно привязана к seat0.


Определив названия подключенных устройств создадим новое рабочее место seat1, привязав к нему видеокарту. Привязка корневого устройства видеокарты для приведенного выше комплекта устройств выполняется командой:

sudo loginctl attach seat1 /sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1
Проверка:
sudo loginctl seat-status seat1

seat1
         Devices:
                  └─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1
                    [MASTER] drm:card1
                    ├─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1/card1-DVI-I-2
                    │ [MASTER] drm:card1-DVI-I-2
                    └─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1/card1-DVI-I-3
                      [MASTER] drm:card1-DVI-I-3
Далее выполнить привязку логических устройств мыши:
sudo loginctl attach seat1 /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input12 \
                           /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input13 \
                           /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input14
И выполнить привязку клавиатуры:
sudo loginctl attach seat1 /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.0/0003:C0F4:01B0.0001/input/input5 \
                           /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.1/0003:C0F4:01B0.0002/input/input6 \
                           /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.1/0003:C0F4:01B0.0002/input/input7
Проверим состояние рабочего места seat1:

sudo loginctl seat-status seat1

В результате рабочее место seat1 должно получить полный набор устройств:

seat1
         Devices:
                  ├─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1
                  │ [MASTER] drm:card1
                  │ ├─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1/card1-DVI-I-2
                  │ │ [MASTER] drm:card1-DVI-I-2
                  │ └─/sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1/card1-DVI-I-3
                  │   [MASTER] drm:card1-DVI-I-3
                  ├─/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input12
                  │ input:input12 "Telink SVEN WIRELESS MOUSE Mouse"
                  ├─/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input13
                  │ input:input13 "Telink SVEN WIRELESS MOUSE Consumer Control"
                  ├─/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input14
                  │ input:input14 "Telink SVEN WIRELESS MOUSE System Control"
                  ├─/sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.0/0003:C0F4:01B0.0001/input/input5
                  │ input:input5 "USB usb keyboard"
                  ├─/sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.1/0003:C0F4:01B0.0002/input/input6
                  │ input:input6 "USB usb keyboard Consumer Control"
                  └─/sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.1/0003:C0F4:01B0.0002/input/input7
                    input:input7 "USB usb keyboard System Control"

Настройка менеджера графических дисплеев

В целях безопасности в ОС Astra Linux менеджер графических дисплеев fly-dm работает от имени непривилегированного пользователя fly-dm. Для работы в режиме multiseat  следует переключить fly-dm на работу от имени root. Для этого в файле /etc/X11/fly-dm/fly-dmrc указать параметр ServerUID=root:

/etc/X11/fly-dm/fly-dmrc
# The user the X-server should run as. Empty results - auto, i.e. 'root' or 'fly-dm' if KMS enabled.
# Default is ""
ServerUID=root

При работе в Astra Linux Special Edition 1.6 в конец /etc/X11/fly-dm/fly-dmrc файла добавить информацию о новом рабочем месте seat1:

/etc/X11/fly-dm/fly-dmrc
[X-:1-Core]
ServerArgsLocal=-seat seat1

При работе в Astra Linux Special Edition 1.7 наличие второго рабочего места определяется автоматически.

Разрешение одновременных сессий

В целях безопасности по-умолчанию в Astra Linux при переключении между сессиями неактивная сессия блокируется. При работе в Astra Linux Special Edition 1.6 для одновременной работы двух и более сессий требуется дополнительная настройка: "Панель управления" - меню "Пуск", вкладка "Рабочий стол", программа "Оформление Fly". На вкладке "Блокировка" убрать галочку "Переключение на другую сессию".

Эту операцию нужно выполнить для каждого созданного пользователя, для каждого уровня конфиденциальности и для каждого уровня целостности.

При работе в Astra Linux Special Edition 1.7 необходимость отключения блокировки при переключении между рабочими местами определяется автоматически.

После выполнения указанных действий перезагрузить компьютер:

sudo reboot
После загрузки системы должна стать доступной одновременная работа двух пользователей с двух рабочих мест.

Удаление дополнительного рабочего места

Для удаления дополнительного рабочего места:

  1. Удалить секцию удаляемого рабочего места в файле /etc/X11/fly-dm/fly-dmrc

    /etc/X11/fly-dm/fly-dmrc
    [X-:1-Core]
    ServerArgsLocal=-seat seat1
  2. Перезагрузить компьютер;
  3. Отвязать от удаляемого рабочего места все устройства кроме видеокарты. Отвязывание устройств выполняется перепривязкой устройств к рабочему месту seat0:

    sudo loginctl attach seat0 /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.0/0003:C0F4:01B0.0001/input/input5 \
                               /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.1/0003:C0F4:01B0.0002/input/input6 \
                               /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.1/0003:C0F4:01B0.0002/input/input7
    sudo loginctl attach seat0 /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input12 \
                               /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input13 \
                               /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.2/1-5.2:1.0/0003:248A:8366.0005/input/input14
    Для полной перепривязки всех устройств команды может потребоваться повторить несколько раз.

  4. Убедившись с помощью команды sudo loginctl seat-status, что все устройства, кроме видеокарты, отвязаны, перепривязать к рабочему месту видеокарту:

    sudo loginctl attach seat0 /sys/devices/pci0000:00/0000:00:06.0/0000:02:00.0/drm/card1


  • No labels