Здравствуйте, уважаемые читатели!

Продолжаю цикл заметок «опыт из командировок или шаг назад» 🙂 , где я постоянно сталкиваюсь с устаревшей, но упорно используемой операционной системой Astra Linux SE 1.5.

Сегодня мы разберём самую популярную проблему, возникающую у пользователей, работающих с флеш-накопителями на нескольких мандатных уровнях в Astra Linux SE 1.5.

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

То есть, например, Вы используете «Секретный» мандатный уровень, вставляете флешку — она корректно работает. Вы извлекаете флешку, выходите из «Секретного» уровня, входите в уровень «Для служебного пользования» вставляете другую флешку и она не открывается.

Помогает только перезагрузка компьютера.

С симптомами разобрались, теперь посмотрим, что вызывает такое поведение.

Дело в том, что для разграничения доступа к флеш-носителю операционная система (а точнее сказать udev) создаёт файл блочного устройства с префиксом наименования файловой системы, права на которое предоставляются пользователю, в соответствии с настроенным правилом во вкладке «Устройства» политики безопасности, кроме того файлу устройства присваивается мандатная метка.

Ошибка заключается в том, что операционная система не удаляет указанные файлы блочных устройств после извлечения флеш-носителя.

Именно по данной причине, при использовании следующей флешки (например, с именем sdb1) файл блочного устройства с более высокой мандатной меткой будет существовать в системе. То есть по факту, под мандатным уровнем «Для служебного пользования» мы будем пытаться получить доступ к «Секретному» блочному устройству (флешке). Разумеется, сделать это нам не удастся.

Почему нам помогает перезагрузка? Файлы блочных устройств удаляются при перезагрузке.

Можно не перезагружать компьютер, а вручную удалять данные файлы /dev/sdx_fstype (например, /dev/sdc1_vfat, /dev/sdg1_vfat и т.п.).

Но согласитесь, делать это каждый раз неудобно.

Как я в своё время решал эту проблему (и решаю её вновь, вернувшись в прошлое) — я создаю правило udev для блочного устройства, которое будет срабатывать при извлечении последнего.

Сделать это достаточно просто, нужно создать файл правила, например:

mcedit /etc/udev/rules.d/01-flash.rules

И внести в него само правило:

SUBSYSTEM=="block",KERNEL=="sd[a-z][0-9]|sd[a-z]",ACTION="remove",RUN+="/bin/rm /dev/%k_vfat"

Вот и всё — после извлечения флеш-носителя файл блочного устройства будет автоматически удаляться и проблем подобных описанной, больше не возникнет (обратите внимание, что моё правило написано для накопителей с файловой системой vfat — если есть необходимость, правило нужно отредактировать).

Всем хорошего дня.

Добавить комментарий

Ваш e-mail не будет опубликован.