Подробный гайд по устранению ошибки «Отказано в доступе» с pdpl-file в Astra Linux - Часть 1
Гайд ориентирован на Astra Linux Special Edition (Орёл, Смоленск, Брест, Ленинград и др.) с включённым мандатным контролем доступа (МКД). Команды и поведение могут немного отличаться в зависимости от версии ОС и настроенной политики безопасности.
1. Что такое pdpl-file и почему возникает ошибка
pdpl-file — утилита Astra Linux для работы с метками безопасности файлов:
- просмотр текущей метки файла;
- установка/изменение уровня конфиденциальности;
- изменение уровней целостности;
- рекурсивная обработка каталогов;
- проверка корректности меток.
Типичные примеры:
pdpl-file /etc/passwd
pdpl-file 0:0 /home/user/file.txt
sudo pdpl-file 1:0 /opt/app/config.conf
Ошибка «Отказано в доступе» означает, что ядро или подсистема безопасности Astra Linux заблокировала операцию.
Причина почти всегда связана с:
- недостаточными правами пользователя;
- неверной меткой текущего процесса;
- неверной меткой целевого файла или каталога;
- ограничениями файловой системы;
- нарушением правил мандатного доступа;
- политикой безопасности или СЗИ.
2. Как выглядит ошибка
Примеры:
pdpl-file 1:0 /etc/app/config.conf
pdpl-file: Отказано в доступе
или:
sudo pdpl-file 2:0 /opt/secret/data.db
Operation not permitted
или при рекурсивной обработке:
sudo pdpl-file -R 0:0 /srv/share
pdpl-file: /srv/share/protected: Отказано в доступе
3. Быстрая диагностика
Перед исправлением выполните базовые проверки.
3.1. Проверьте, от какого пользователя выполняется команда
id
whoami
Для изменения меток обычно нужны права администратора безопасности или root, но даже root может быть ограничен меткой текущего сеанса.
3.2. Посмотрите текущую метку процесса
В Astra Linux метка текущего процесса можно посмотреть через:
cat /proc/self/attr/current
Пример вывода:
0:0
или:
1:0
Если ваш процесс работает на уровне 0:0, а вы пытаетесь изменить файл с уровнем 2:0, операция может быть запрещена.
3.3. Посмотрите метку целевого файла
pdpl-file /путь/к/файлу
или:
ls -lZ /путь/к/файлу
Также можно использовать:
getfattr -n security.pdpl /путь/к/файлу
или:
getfattr -m - /путь/к/файлу
3.4. Проверьте права обычного доступа
ls -l /путь/к/файлу
ls -ld /путь/к/каталогу
Мандатный контроль не отменяет обычные права POSIX. Если у пользователя нет прав на чтение/запись/выполнение файла или обход каталога, доступ будет запрещён.
4. Основные причины и способы решения
Ниже — самые частые причины ошибки и порядок действий.
Причина 1. Команда выполняется без достаточных прав
Симптомы
pdpl-file 1:0 /etc/myapp/config.conf
pdpl-file: Отказано в доступе
Файл принадлежит root, пользователь обычный.
Решение
Попробуйте выполнить через sudo:
sudo pdpl-file 1:0 /etc/myapp/config.conf
Если требуется рекурсивно:
sudo pdpl-file -R 1:0 /etc/myapp
Но важно: в системе с МКД даже root может не иметь права изменить метку, если текущая метка процесса не соответствует требуемому уровню.
Причина 2. Текущая метка процесса ниже метки файла
Суть проблемы
В мандатной модели доступа субъект — это процесс, объект — файл. Если процесс имеет уровень доступа ниже, чем объект, операция может быть запрещена.
Например:
cat /proc/self/attr/current
0:0
а файл:
pdpl-file /opt/secret/data.db
2:0
Попытка изменить метку файла может завершиться отказом.
Решение
Нужно работать в сеансе с соответствующим уровнем доступа. Например, войти в систему с более высоким уровнем конфиденциальности или переключить уровень сессии, если это разрешено политикой.
Проверить текущий уровень:
cat /proc/self/attr/current
Проверить уровень файла:
pdpl-file /opt/secret/data.db
Если вам действительно нужно изменить метку файла уровня 2:0, ваш процесс также должен иметь достаточный уровень и полномочия.
Причина 3. Неправильно указана метка
Типичные ошибки
Неверный формат:
pdpl-file high /file.txt
pdpl-file level1 /file.txt
pdpl-file confidential /file.txt
Обычно метка указывается в числовом виде:
уровень_конфиденциальности:категория
Примеры:
0:0
1:0
2:0
3:0
Правильный порядок
Сначала посмотрите справку:
pdpl-file --help
man pdpl-file
Затем используйте корректный синтаксис, например:
sudo pdpl-file 1:0 /path/to/file
или, в зависимости от версии:
sudo pdpl-file -m 1:0 /path/to/file
Причина 4. Файловая система не поддерживает расширенные атрибуты
Метки безопасности обычно хранятся в расширенных атрибутах файловой системы. Если ФС не поддерживает xattr или смонтирована без нужных опций, pdpl-file может выдать ошибку.
Проверка
Посмотреть список файловых систем:
df -T /путь/к/файлу
Проверить параметры монтирования:
mount | grep "$(df /путь/к/файлу | tail -1 | awk '{print $NF}')"
Или:
findmnt -T /путь/к/файлу
Признаки проблемы
Файл находится на:
tmpfs;- FAT/VFAT;
- NTFS без полноценной поддержки xattr;
- сетевой ФС без поддержки нужных атрибутов;
- внешнем носителе, смонтированном с ограничениями.
Решение
Перенести файл в локальную ФС с поддержкой расширенных атрибутов, например ext4:
sudo mkdir /opt/secure
sudo mv /mnt/usb/file.txt /opt/secure/
sudo pdpl-file 1:0 /opt/secure/file.txt
Для tmpfs, сетевых и съёмных носителей нужно проверять поддержку конкретной меток безопасности в вашей версии Astra Linux.
Причина 5. Каталог имеет более высокую метку, чем процесс
Иногда проблема не в самом файле, а в родительском каталоге.
Пример
pdpl-file /srv
0:0
pdpl-file /srv/secret
2:0
pdpl-file /srv/secret/file.txt
2:0
Если текущий процесс работает на уровне 0:0, он может не иметь доступа к каталогу /srv/secret.
Диагностика
pdpl-file /srv
pdpl-file /srv/secret
pdpl-file /srv/secret/file.txt
Решение
Запустить сеанс с нужным уровнем доступа или выполнять операцию из-под процесса с корректной меткой.
Причина 6. Нарушены правила изменения уровня конфиденциальности
В мандатной модели существуют ограничения на повышение и понижение меток.
Например:
- нельзя произвольно повышать уровень конфиденциальности без соответствующих полномочий;
- нельзя понижать уровень, если это запрещено политикой;
- для изменения меток системных файлов нужны специальные права администратора безопасности;
- некоторые файлы защищены от изменения метки.
Что делать
1. Определите текущую метку:
pdpl-file /путь/к/файлу
2. Определите, куда вы пытаетесь изменить:
sudo pdpl-file 2:0 /путь/к/файлу
3. Проверьте, разрешено ли вашему пользователю и процессу выполнять такое изменение.
Если вы не администратор безопасности, обратитесь к администратору безопасности системы.
Причина 7. Файл принадлежит другому пользователю и защищён
Даже при наличии sudo могут действовать дополнительные ограничения.
Проверка
ls -l /путь/к/файлу
pdpl-file /путь/к/файлу
Решение
Если файл принадлежит другому пользователю, но вам нужно изменить его метку:
sudo pdpl-file 1:0 /путь/к/файлу
Если это не помогает, проверьте:
- метку процесса;
- каталог, где лежит файл;
- политику безопасности;
- журналы аудита.
Причина 8. Файл заблокирован другим процессом или СЗИ
Если файл используется приложением, службой или средством защиты информации, операция может быть запрещена.
Диагностика
Посмотреть, кто использует файл:
sudo lsof /путь/к/файлу
или:
sudo fuser -v /путь/к/файлу
Решение
Остановить приложение, использующее файл:
sudo systemctl stop app-service
sudo pdpl-file 1:0 /etc/app/config.conf
sudo systemctl start app-service
Если файл используется системным процессом, сначала завершите соответствующую службу или переведите систему в режим обслуживания.
Причина 9. Проблема с мандатным контролем целостности
В Astra Linux могут использоваться не только уровни конфиденциальности, но и атрибуты целостности. Если вы меняете метку целостности или работаете с защищёнными файлами, ошибка может быть связана с нарушением правил целостности.
Проверка
Посмотрите полную информацию о метке:
pdpl-file /путь/к/файлу
или:
ls -lZ /путь/к/файлу
Решение
Не меняйте метки целостности системных файлов без понимания последствий. Если нужно восстановить метки, используйте рекомендации администратора безопасности или политики, принятой в организации.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.