Bug 44908

Summary: alterator-ports-access: Не работает режим доступа
Product: Branch p10 Reporter: Anton Shevtsov <shevtsov.anton>
Component: alterator-ports-accessAssignee: manowar <manowar>
Status: ASSIGNED --- QA Contact: manowar <manowar>
Severity: normal    
Priority: P5 CC: manowar, pikone
Version: не указана   
Hardware: x86   
OS: Linux   
Attachments:
Description Flags
Успешная запись на накопитель с доступом только root от другого пользователя none

Description Anton Shevtsov 2023-01-13 08:41:20 MSK
rpm -qi alterator-ports-access

Name        : alterator-ports-access
Version     : 0.5.3
Release     : alt1
DistTag     : p10+296300.300.2.1
Architecture: noarch
Install Date: Пт 13 янв 2023 10:03:49
Group       : System/Configuration/Other
Size        : 38415
License     : GPLv2+
Signature   : RSA/SHA512, Чт 17 мар 2022 13:52:35, Key ID 42f343a2c7eb80f9
Source RPM  : alterator-ports-access-0.5.3-alt1.src.rpm
Build Date  : Чт 17 мар 2022 13:52:34
Build Host  : manowar-p10.hasher.altlinux.org
Relocations : (not relocatable)
Packager    : Paul Wolneykien <manowar@altlinux.org>
Vendor      : ALT Linux Team
Summary     : alterator module to control ports access
Description :
Alterator module to control serial/USB ports access


При базовом сценарии разрешить\запретить определенную флешку - все работает.
Но если в правило внести опцию "режим доступа", чтобы четко определить пользователя и\или группу кто может (и в каком режиме) использовать флеш накопитель - эти настойки в правила udev сохраняются (OWNER, GROUP. MODE), но никаким образом не работают. 
Т.е. ограничив доступ к флешке пользователем, группой - тем не менее она все равно доступна всем.
Comment 1 Anton Shevtsov 2023-01-13 08:45:51 MSK
Сценарий воспроизведения может быть такой

Пользователи
user1
user2
user3
user3

Группы
Workers: user1,user2
Bosses: user3,user4

Две флешки
Синяя
Красная

Задачи
1. Разрешить использование "синей" всем из Workers
2. Разрешить использование "красной" всем из Bosses

Предполагается, что членам Workers будет недоступна "красная" флешка, а членам Bosses - "синяя"
Comment 2 Evgeny Ivanitskiy 2023-07-02 20:59:12 MSK
Проверил воспроизводимость ошибки - ошибка воспроизводится

Стенд: Alt Server 10.1
Версия пакетов:
alterator-ports-access 0.5.3-alt1.1

Шаги для воспроизведения:
1. Установить пакеты:

   # apt-get install alterator-ports-access cheese -y

2. Перейти по адресу localhost:8080 и ввести пароль от пользователя root
3. Открыть раздел "Система" ⇢ "Контроль доступа к портам"
4. Внизу страницы нажать на "Включить контроль последовательных портов" и "Включить контроль USB-портов"
5. Подключить Web-камеру к машине и выполнить сканирование подключенных USB устройств
6. Выделить с помощью ЛКМ найденную камеру и "Разрешить выбранное устройство"
7. В списке разрешенных устройств нажать два раза ЛКМ по камере и в режиме доступа указать "Владелец (чтение)", а в поле "Владелец" указать "root"
8. "Сохранить параметры USB устройства"
9. Открыть Cheese

Ожидаемый результат:
Cheese сообщает, что не может найти устройство

Фактический результат:
Камера успешно работает, хотя по настроенному режиму доступа должна быть доступна только для пользователя root.

То же самое поведение при использовании USB-Flash накопителя - настройка режима доступа никак не влияет на чтение или запись с устройства. 


Проверить воспроизводимость ошибки в sisyphus не удалось, так как  пакет был удален в задании https://packages.altlinux.org/ru/tasks/323985/ с сообщением Final removal of 14+ weeks x86_64 ftbfs package
Comment 3 manowar@altlinux.org 2023-07-03 21:14:20 MSK
(Ответ для Evgeny Ivanitskiy на комментарий #2)
> Фактический результат:
> Камера успешно работает, хотя по настроенному режиму доступа должна быть
> доступна только для пользователя root.

А что с самим файлом камеры (/dev/video*)? Какие у него получаются права? Не может быть, чтобы был только root, а устройство было доступно. Другое дело, что нужно ещё исследовать, ограничивает ли правила udev доступ к файлам /dev/video*. Насколько я знаю, именно они обеспечивают доступ к камере.
Comment 4 manowar@altlinux.org 2023-07-03 21:14:40 MSK
(Ответ для Evgeny Ivanitskiy на комментарий #2)
> Проверить воспроизводимость ошибки в sisyphus не удалось, так как  пакет был
> удален в задании https://packages.altlinux.org/ru/tasks/323985/ с сообщением
> Final removal of 14+ weeks x86_64 ftbfs package

Сейчас поправлю.
Comment 5 manowar@altlinux.org 2023-07-04 15:25:41 MSK
Скажите, пожалуйста, а режим доступа (owner, mode) точно тестировался по данной методике ранее? И работал? Просто проблема в том, что в отношении, к примеру, флешки, права на /dev/sd* формально устанавливаются правильно (root, -r------), но это никоим образом не ограничивает возможность монтирования флешки в файловую систему. И не может ограничить — это особенность архитектуры ОС. Поэтому я и уточняю.
Comment 6 Evgeny Ivanitskiy 2023-07-07 21:42:30 MSK
> А что с самим файлом камеры (/dev/video*)? Какие у него получаются права? 
У файла /dev/video0 получаются следующие права:
crw-rw----+ 1 root video 81, 0 июл  7 21:17 video

> Скажите, пожалуйста, а режим доступа (owner, mode) точно тестировался по данной методике ранее
Тестировалось только изменение прав у файлов /dev/sd*. Но проверка записи на такие устройства не производилась

> но это никоим образом не ограничивает возможность монтирования флешки в файловую систему
Однако же если включить контроль доступа USB-портов и не добавить устройство в список разрешенных, то накопитель вообще не определяется системой. В lsblk отсутствуют какие либо упоминания про накопитель; в /dev нет никаких других дисков, кроме системного. А после разрешения такого устройства, в lsblk и в /dev сразу же появляется новое устройство и накопитель автоматически монтируется.

> формально устанавливаются правильно (root, -r------)
Да, правильно. Вот такие права получаются у устройства и у раздела при установке режима доступа "Владелец (чтение)" и указания владельцем root:
br-------- 1 root disk 8, 16 июл  7 21:29 sdb
br-------- 1 root disk 8, 17 июл  7 21:32 sdb1

Но при таких правах на накопитель можно записывать файлы из другого пользователя. Приложил видео для подтверждения
Comment 7 Evgeny Ivanitskiy 2023-07-07 21:43:48 MSK
Created attachment 13747 [details]
Успешная запись на накопитель с доступом только root от другого пользователя
Comment 8 manowar@altlinux.org 2023-07-07 23:07:14 MSK
(Ответ для Evgeny Ivanitskiy на комментарий #6)

> > но это никоим образом не ограничивает возможность монтирования флешки в файловую систему
> Однако же если включить контроль доступа USB-портов и не добавить устройство
> в список разрешенных, то накопитель вообще не определяется системой.

Именно. Накопитель (/dev/sd*) в этом случае вообще отсутствует. Поэтому и монтировать нечего.

> > формально устанавливаются правильно (root, -r------)
> Да, правильно. Вот такие права получаются у устройства и у раздела при
> установке режима доступа "Владелец (чтение)" и указания владельцем root:
> br-------- 1 root disk 8, 16 июл  7 21:29 sdb
> br-------- 1 root disk 8, 17 июл  7 21:32 sdb1
> 
> Но при таких правах на накопитель можно записывать файлы из другого
> пользователя. Приложил видео для подтверждения

Да не нужно было видео. Потому что:

> > но это никоим образом не ограничивает возможность монтирования флешки в файловую систему

Иными словами, при любых правах на /dev/sd* пользователь — обычный, любой, рядовой пользователь — сможет смонтировать флешку у себя на рабочем столе и даже записать на неё данные. Потому что:

> это особенность архитектуры ОС.

По крайней мере, с теми настройками Polkit и Udisks, которые есть у нас по умолчанию.

Я постараюсь разобраться, есть ли тут какие-то ещё варианты. На первый взгляд, модуль alterator-ports-access мог бы заодно менять конфигурацию Polkit. Но может быть есть и другое решение.

Однако, это в том, что касается флешек. А что с web-камерами — отдельный вопрос. И это не конец списка, мне кажется. Полагаю, есть ещё подсистемы, с которыми наш пользователь взаимодействует через ту или иную прослойку (допустим, принтеры!) и где, поэтому набор доступных пользователю операций никак не связан с правами на конечное USB-устройство.