Введение в работу с chcon
Утилита chcon служит ключевым инструментом системного администратора при необходимости оперативной корректировки контекста безопасности (Security Context) в среде SELinux. В данном руководстве мы подробно разберем четыре практических сценария использования команды, а также рассмотрим критически важные нюансы, связанные с сохранением настроек после перезагрузки ОС и выполнением процедур восстановления.
Просмотр меток SELinux и базовый синтаксис chcon
Для безопасного проведения тестов подготовим изолированное рабочее пространство, выполнив команду создания каталога и перехода в него: mkdir -p /tmp/chcon_lab && cd /tmp/chcon_lab.

Далее инициализируем тестовый файл для дальнейших экспериментов с атрибутами безопасности с помощью команды touch web_sample.html.

Текущие параметры контекста безопасности проверяются вызовом ls -Z web_sample.html.
Символ ? в выводе терминала свидетельствует о том, что механизм SELinux в текущей системе отключен (Disabled) либо объекту не присвоена соответствующая метка.
Общий формат вызова утилиты имеет следующий вид: chcon [опции] контекст имя_файла.
⚙️ [Основные ключи утилиты]
-t : задает тип контекста безопасности (Type) для целевого объекта.-u : переопределяет идентификатор пользователя SELinux (User).-r : корректирует назначенную роль (Role).-R : выполняет рекурсивное применение параметров ко всем вложенным подкаталогам и файлам.--reference : копирует параметры контекста из указанного эталонного файла.-v : выводит подробный отчет о каждом измененном объекте в консоль.

Практическое применение флага -t для смены типа
Создадим рабочий веб-документ и проверим структуру каталога с помощью команды mkdir -p /tmp/chcon_lab && touch /tmp/chcon_lab/index.html.

Чтобы веб-сервер мог беспрепятственно отдавать файл клиентам, назначим ему соответствующий тип политики SELinux через chcon -t httpd_sys_content_t /tmp/chcon_lab/index.html.

Убедимся в успешности внесенных модификаций, запустив проверку: ls -Z /tmp/chcon_lab/index.html.
Отображение знака ? указывает на то, что режим SELinux деактивирован на системном уровне, из-за чего атрибуты контекста не регистрируются ядром.

Дублирование контекста через –reference и рекурсивная обработка (-R)
Сформируем вложенную файловую структуру с файлом стилей для тестирования групповых операций с помощью команды mkdir -p /tmp/chcon_lab/public_html && touch /tmp/chcon_lab/public_html/style.css.

Также создадим целевой файл страницы, на который будем переносить параметры, вызвав команду touch /tmp/chcon_lab/target_page.html.

Выполним точное копирование контекста безопасности с эталона index.html на новый документ посредством chcon --reference=/tmp/chcon_lab/index.html /tmp/chcon_lab/target_page.html.
Использование параметра --reference исключает ошибки ручного ввода сложных строк контекста, позволяя безопасно наследовать рабочие настройки доверенных файлов.

Для пакетного обновления прав доступа ко всей ветке файлов выполним chcon -R -t httpd_sys_content_t /tmp/chcon_lab/public_html.
Ключ -R запускает рекурсивный обход, единообразно переопределяя тип httpd_sys_content_t для каталога и всего его содержимого.

Проконтролируем результирующие атрибуты вложенных элементов с помощью подробного листинга: ls -laZ /tmp/chcon_lab/public_html.
Наличие вопросительного знака ? по-прежнему напоминает о выключенном модуле SELinux в текущей операционной среде.

Ограничения chcon и риски потери настроек
Для демонстрации работы механизма сброса контекста установим системный набор утилит SELinux, выполнив команду apt-get update -qq && apt-get install -y policycoreutils.

Подготовим отдельный тестовый файл для проверки поведения системы при сбросе меток с помощью команды touch /tmp/chcon_lab/warning_test.txt.

Назначим объекту временный тип контекста через chcon -t tmp_t /tmp/chcon_lab/warning_test.txt.
Принципиально важно помнить: любые изменения, внесенные через chcon, являются временными и не фиксируются в глобальной базе политик безопасности.

Выполним проверку состояния файла стандартной командой ls -Z /tmp/chcon_lab/warning_test.txt.
Символ ? в консоли подтверждает неактивный статус подсистемы SELinux.

Попробуем вернуть контекст к значениям по умолчанию, заданным системной политикой, с помощью restorecon -v /tmp/chcon_lab/warning_test.txt.
Поскольку chcon лишь перезаписывает расширенные атрибуты inode без регистрации в базе данных, выполнение restorecon или плановая переразметка файловой системы (autorelabel) мгновенно откатят значения к исходным; для долговременной фиксации правил следует применять инструмент semanage fcontext.

Зафиксируем итоговое состояние объекта после отката с помощью ls -Z /tmp/chcon_lab/warning_test.txt.
Появление отметки ? свидетельствует о том, что функции SELinux в данной системе по-прежнему отключены.

Мы подробно рассмотрели алгоритмы работы с утилитой chcon для оперативной корректировки контекста SELinux, а также разобрали потенциальные риски ее применения на серверах.
Четкое понимание различий между временным назначением меток и постоянными системными правилами позволит вам гибко и безопасно управлять правами доступа в Linux.