Как скопировать контекст SELinux из одного каталога и применить его к другому каталогу?

Как скопировать контекст SELinux из одного каталога и применить его к другому?

Пример использования сценария заключается в создании нового локального пользователя за пределами пути по умолчанию / home, например:

$ sudo useradd -d /websites Tim 

Это создает домашний каталог /websites Тима и устанавливает правильные разрешения и права собственности для Тима, однако его контекст SELinux отличается от других пользователей, как показано здесь:

 # ls -dZ /websites drwx------. Tim Tim system_u:object_r:etc_runtime_t:s0 /websites 

То, что я хочу сделать, это скопировать контекст SELinux из другого пользовательского / домашнего каталога и применить его к директории Tim /websites .

Контекст SELinux другого пользователя выглядит следующим образом:

 # ls -Z /home/ drwx------. Ben Ben unconfined_u:object_r:user_home_dir_t:s0 Ben drwx------. Bob Bob unconfined_u:object_r:user_home_dir_t:s0 Bob drwx------. lexy lexy unconfined_u:object_r:user_home_dir_t:s0 lexy 

Это просто делается с использованием флагов -a и -e как в:

 semanage fcontext -a -e /home/Ben '/websites(/.*)?' 

-a : добавить,

-e : эквивалентность


После этого вам придется запустить restorecon, как в:

 restorecon -vvRF /websites 

и будет применен новый контекст файла.

-v : показывать изменения в ярлыках файлов,

-R : рекурсивный,

-F : принудительное сброс контекста


Также можно изменить контекст файла SELinux с помощью:

 semanage fcontext -a -t httpd_sys_content_t '/website(/.*)?' 

Это будет назначать новый файлконтекст независимо.

-a : добавить,

-t : type