У меня есть сервер под управлением Centos7 / XFS с SElinux, на котором возникла проблема (не связанная с SElinux), которую нужно было восстановить из моментального снимка, сделанного несколько недель назад. Этот сервер также каждую ночь делает резервную копию rsync в выделенном внешнем контейнере Docker.
Я восстановил моментальный снимок, а затем восстановил ключевые файлы / базы данных из ночной резервной копии, так как я не знал, в чем проблема. К сожалению, контексты / метки восстановленных файлов теперь полностью неверны и показывают метки контейнеров Docker (восстановленный сервер не запустить Docker). Примеры:
В / корень:
[root@mail ~]# ls -alZ
dr-xr-x---. root root system_u:object_r:container_file_t:s0:c18,c703 .
dr-xr-xr-x. root root system_u:object_r:root_t:s0 ..
-rw-------. root root system_u:object_r:container_file_t:s0:c18,c703 anaconda-ks.cfg
drwxr-xr-x. root root system_u:object_r:container_file_t:s0:c18,c703 archive
drwxr-xr-x. root root system_u:object_r:container_file_t:s0:c18,c703 bak
etc . . .
и файлы / etc также показывают маркировку контейнера:
[root@mail audit]# ls -alZ
drwxr-x---. root root system_u:object_r:container_file_t:s0:c18,c703 .
drwxr-xr-x. root root system_u:object_r:etc_t:s0 ..
-rw-r-----. root root system_u:object_r:container_file_t:s0:c18,c703 auditd.conf
-rw-r-----. root root system_u:object_r:container_file_t:s0:c18,c703 auditd.conf.bak
-rw-r-----. root root system_u:object_r:container_file_t:s0:c18,c703 audit.rules
-rw-r-----. root root system_u:object_r:container_file_t:s0:c18,c703 audit-stop.rules
drwxr-x---. root root system_u:object_r:container_file_t:s0:c18,c703 rules.d
etc . . .
Я бежал touch .autorelabel
и перезагрузился, fixfiles restore
, fixfiles relabel
и restorecon
и даже переустановил целевую политику - все без толку. Сервер отлично работает с Permissive, но я хотел бы снова запустить SElinux. Сервер работал в совершенстве с включенным SElinux до несвязанной проблемы и последующего восстановления.
Как я могу восстановить предыдущие (по умолчанию) контексты и метки SElinux для всей файловой системы без ручного сканирования каталогов и исправления их вручную?
Итак, после хорошего ночного сна, еще раз покопавшись на ServerFault и страницах руководства, я нашел ответ:
`restorecon -vRF '
Не хватало опции F (сила) - теперь все работает хорошо.