Product SiteDocumentation Site

5.7. Контексты SELinux - Маркирование файлов

В системах с запущенным SELinux, все процессы и файлы маркированы (помечены) так, чтобы представлять информацию в контексте безопасности. Эта информация называется контекстом SELinux, и просматривается с использованием команды ls -Z:
$ ls -Z file1
-rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
В этом примере, SELinux приводит пользователя (unconfined_u), роль (object_r), тип (user_home_t) и уровень (s0). Эта информация используется для принятия решений контроля доступа. В системах DAC, контроль доступа осуществляется с использованием ID пользователя и группы. Правила политики SELinux проверяются после правил DAC. Правила политики SELinux не используются, если DAC блокировал доступ первым.
Существует множество команд для управления контекстом SELinux для файлов, такие как chcon, semanage fcontext и restorecon.

5.7.1. Временные изменения: chcon

Команда chcon вносит изменения в контекст SELinux для файлов. Однако, изменения, вносимые с помощью команды chcon не сохраняются после перемаркирования файловой системы или выполнения команды /sbin/restorecon. Политика SELinux контролирует может ли пользователь изменять контекст для файлов. При использовании команды chcon, пользователи предоставляют всю информацию или часть об изменении контекста SELinux. Некорректный тип файла обычно является причиной блокирования доступа SELinux.
Быстрое ознакомление
  • Выполните команду chcon -t type file-name для изменения типа файла, где type - это тип, такой как httpd_sys_content_t, а file-name имя файла или каталога.
  • Выполните команду chcon -R -t type directory-name для изменения типа каталога и его содержимого, где type - это тип, такой как httpd_sys_content_t, а directory-name имя каталога.
Изменение типа файла или каталога
В следующих примерах показывается изменение атрибута тип контекста SELinux:
  1. Выполните команду cd без аргументов для перехода в домашний каталог.
  2. Выполните команду touch file1 для создания нового файла. Используя команду ls -Z file1 просмотрите контекст SELinux для file1:
    $ ls -Z file1
    -rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
    
    В этом примере контекст SELinux для file1 включает пользователя SELinux unconfined_u, роль object_r, тип user_home_t и уровень s0. Расширенное описание каждой части контекста SELinux доступно согласно Глава 3, Контексты SELinux.
  3. Выполните команду chcon -t samba_share_t file1 для изменения типа на samba_share_t. Опция -t отвечает за изменение типа. Просмотрите изменения с помощью ls -Z file1:
    $ ls -Z file1 
    -rw-rw-r--  user1 group1 unconfined_u:object_r:samba_share_t:s0 file1
    
  4. Используйте команду /sbin/restorecon -v file1 для восстановления контекста SELinux для файла file1. Используйте -v опцию для просмотра изменений, вносимых командой:
    $ /sbin/restorecon -v file1
    restorecon reset file1 context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:user_home_t:s0
    
    В этом примере, предыдущий тип samba_share_t восстанавливается на корректное значение, user_home_t. Когда используется целевая политика targeted (Политика SELinux по умолчанию в Fedora 11), команда /sbin/restorecon читает файлы в каталоге /etc/selinux/targeted/contexts/files/, для того, чтобы узнать какие контексты SELinux должны присваиваться файлам.
Данный пример работает также и для каталогов, то есть, применим, если file1 является каталогом.
Изменение типа каталога и его содержимого
Следующий пример демонстрирует создание нового каталога и изменение типа каталога (вместе с его контекстом) на тип, используемый Apache HTTP Server. Конфигурация в этом примере используется если вы хотите назначить Apache HTTP Server другой корневой каталог document root (вместо /var/www/html/):
  1. От имени пользователя root, выполните команду mkdir /web для создания нового каталога и команду touch /web/file{1,2,3} для создания трёх пустых файлов (file1, file2 и file3). Каталог /web/ и файлы в внутри каталога помечены как тип default_t:
    # ls -dZ /web
    drwxr-xr-x  root root unconfined_u:object_r:default_t:s0 /web
    # ls -lZ /web
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file1
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file2
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file3
    
  2. От имени пользователя root, выполните команду chcon -R -t httpd_sys_content_t /web/ для изменения типа каталога /web/ (и его содержимого) на httpd_sys_content_t:
    # chcon -R -t httpd_sys_content_t /web/
    # ls -dZ /web/
    drwxr-xr-x  root root unconfined_u:object_r:httpd_sys_content_t:s0 /web/
    # ls -lZ /web/
    -rw-r--r--  root root unconfined_u:object_r:httpd_sys_content_t:s0 file1
    -rw-r--r--  root root unconfined_u:object_r:httpd_sys_content_t:s0 file2
    -rw-r--r--  root root unconfined_u:object_r:httpd_sys_content_t:s0 file3
    
  3. От имени пользователя root выполните команду /sbin/restorecon -R -v /web/ для восстановления контекста SELinux по умолчанию:
    # /sbin/restorecon -R -v /web/
    restorecon reset /web context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
    restorecon reset /web/file2 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
    restorecon reset /web/file3 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
    restorecon reset /web/file1 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
    
Refer to the chcon(1) manual page for further information about chcon.

Примечание

Type Enforcement - это основной контроль доступа, используемый в целевой политике SELinux. В большинстве случаев, пользователи SELinux и роли могут быть проигнорированы.