Здравствуйте, уважаемые читатели!
Продолжаю цикл заметок «опыт из командировок или шаг назад» 🙂 , где я постоянно сталкиваюсь с устаревшей, но упорно используемой операционной системой 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 — если есть необходимость, правило нужно отредактировать).
Всем хорошего дня.
А как решить вот эту проблему?
https://youtu.be/rlc72UwqXh8?si=Vqe61GiY-N6J2vpk
Решение из видео у меня не работает(
Надо так:
ACTION==»remove»
Поправил, спасибо)