Я настраиваю сервер CentOS 7, на котором /home
каталог должен быть расположен в другом разделе, а затем смонтирован с помощью bind-mount. Так: /data/homes
должен быть привязан к /home
.
Проблема в том, чтобы убедиться, что контексты SELinux применяются правильно. Действительно, следующие команды дают противоречивые результаты:
# Applies the rules for /home to all the files
restorecon -R -v /home
# Applies the generic rules (standard files) to all the files
restorecon -R -v /data/homes
Это вызывает проблемы, если системе необходимо изменить метку файлов.
Чтобы решить эту проблему, я изменил файл политики /etc/selinux/targeted/contexts/files/file_contexts.homedirs
скопировав все правила также для /data/homes
:
$ sed -n '/^\/home/p' /etc/selinux/targeted/contexts/files/file_contexts.homedirs \
| sed 's/^\/home/\/data\/homes/' \
>> /etc/selinux/targeted/contexts/files/file_contexts.homedirs
Однако, когда политика перестраивается с semodule -B
, мои изменения потеряны.
Я знаю, что рекомендуемый способ изменения этих файлов - использовать semanage fcontext
, но в общей сложности мне нужно добавить почти 200 правил и запустить semanage for each
не вариант.
Как я могу вручную изменить файлы в /etc/selinux/targeted/contexts/files/file_contexts
и обеспечить сохранение изменений?
semanage fcontext -a -t <file_context> "<path>/<file>(/.*)?"
restorecon -R <path>/<file>
позволит вам добавлять контексты ко многим файлам рекурсивно и постоянно. Я не уверен, пробовали ли вы это еще. Можете ли вы привести несколько примеров правил, которые вы пытаетесь установить, и для каких файлов, чтобы мы могли увидеть, что подходит для ваших нужд?