Вы правы, не желая отключать SELinux для домена rsync_t
. К сожалению, несмотря на то, что возможности настройки реализации SELinux для rsync довольно обширны, существуют пограничные случаи, когда установка rsync_export_all_ro
логического значения по-прежнему не разрешает демону rsync доступ к определенным файлам. Существует одна запись Bugzilla , которая очень похожа на ваши проблемы. Приведенное там предложение состоит в том, чтобы использовать rsync_full_access
для преодоления проблемы, хотя и с нарушением безопасности (все же лучше, чем semanage permissive -a rsync_t
, хотя ).
Итак, чтобы ответить на ваш вопрос, если вы хотите использовать более безопасный вариантrsync_export_all_ro
и иметь возможность разрешить демону rsync доступ к файлам/каталогам «пограничного случая», вам нужно создать свой собственный модуль политики..
Это достигается за счет того, что демон rsync выполняет свою работу в разрешительном режиме, перехватывая отказы AVC по мере их продвижения, а затем преобразовывая отказы AVC в политику, например:
# put SELinux in permissive mode
setenforce 0
# --- do your rsync stuff ---
# get related AVC denials
# I'm using 'recent' here, depending on the rsync run time please adjust accordingly
ausearch -m avc -ts recent --subject rsync_t
# go through the output. If you're satisfied, create the module
ausearch -m avc -ts recent --subject rsync_t | audit2allow -m roaima-rsync-custom-1 > roaima-rsync-custom-1.te
checkmodule -M -m -o roaima-rsync-custom-1.mod roaima-rsync-custom-1.te
semodule_package -o roaima-rsync-custom-1.pp -m roaima-rsync-custom-1.mod
# load the policy module
semodule -i roaima-rsync-custom-1.pp
# disable permissive mode
setenforce 1
# --- do your rsync stuff again --
Если по какой-то причине файлы «пограничного случая» по-прежнему недоступны, а команда ausearch
не дает результатов, возможно, вы сталкиваетесь с правилом «не проводить аудит».
Чтобы перестроить политику SELinux, игнорирующую все правила «dontaudit» -, запустите semodule -DB
. Опция -D
отключает правила «dontaudit»; опция -B
перестраивает политику.
Затем попробуйте инициировать события журнала аудита. Если это так, захватите их, как показано выше, создайте модуль SELinux,а затем снова -включите правила «dontaudit», выполнив:semodule -B
.
Чтобы просмотреть полный список правил «dontaudit», введите команду sesearch --dontaudit
. Сузьте поиск, используя параметр домена -s
и команду grep
. Например :sesearch --dontaudit -s rsync_t
.
На сервере CentOS 7.9 /bin — это символическая ссылка на /usr/bin. Должно быть то же самое в системе REL. вывод which perl
зависит от порядка, установленного в вашем $PATH
.