Я добавил метку SELinux svirt_sandbox_file_t
в/home
chcon -Rt svirt_sandbox_file_t /home
Метка отображается с помощью:
[user@localhost ~]$ ls -Z
unconfined_u:object_r:svirt_sandbox_file_t:s0 Desktop
unconfined_u:object_r:svirt_sandbox_file_t:s0 Documents
...
Как мне svirt_sandbox_file_t
снова удалить этикетку?
Я пробовал перезагружать, я добавил /home/.autorelabel
для запуска перемаркировки, но метка не исчезает. Я использую Fedora 23.
решение1
Я считаю, что если вы установите /etc/selinux/config
перезагрузку disabled
. Затем установите enforcing
и перезагрузите, он перемаркирует, если у вас возникли проблемы с перемаркировкой в противном случае. Странно, что restorecon не сработал.
Если вы хотите сбросить настройки жестким способом, то сам каталог /home должен быть таким:
system_u:object_r:home_root_t
и каждый домашний каталог пользователя (и файлы в нем) должны быть:
unconfined_u:object_r:user_home_dir_t:s0
Вы можете установить их либо с помощью chcon
команды, либо с помощью комбинации semanage
иrestorecon
chcon -t home_root_t /home
chcon -Rt user_home_dir_t /home/*
или
semanage fcontext -a -t home_root_t /home
semanage fcontext -a -t user_home_dir_t /home/*
restorecon -R /home
обратите внимание, чтовообще говоря chcon
используется для принудительного немедленного изменения, оставляя при этом значения по умолчанию, так что a restorecon
восстановит его в контекстах по умолчанию. В вашем случае это, похоже, по какой-то причине пошло не так.
Обычно semanage fcontext
предназначен для записи локального контекстного файла в/etc/selinux/targeted/contexts/files/file_contexts.local
большой объем информации о текущем контексте и контекстах по умолчанию можно найти здесь:
/etc/selinux/targeted/contexts/default_contexts
/etc/selinux/targeted/contexts/files/file_contexts
/etc/selinux/targeted/contexts/files/file_contexts.homedirs
Возможно, что каким-то образом эти файлы были повреждены, и в целом существует множество подконтекстов, которые не могут быть полностью восстановлены вышеуказанными действиями в зависимости от того, как эти файлы были изменены. Возможно, будет хорошей идеей изучить эти файлы и посмотреть, сможете ли вы найти добавленное сопоставление контекста и удалить его таким же образом.
Теоретически вы также можете взять виртуальную машину или другую машину (или, возможно, просто найти их в сети) и скопировать известные хорошие значения по умолчанию в соответствующие каталоги и позволить системе переименовать их, чтобы получить правильные значения по умолчанию. Хотя и здесь будут некоторые недостатки.
В конце дня потребуется немного проб и ошибок; команды chcon/semanage, перечисленные выше, должны дать вам общие сведения, но возможно, что некоторые из ваших подкаталогов будут иметь свои собственные контексты.
Некоторые дополнительные контексты, которые могут быть полезны (все они находятся в /home/username):
ls -laZ /home/username
##context########################### Directory##
unconfined_u:object_r:cache_home_t:s0 .cache
unconfined_u:object_r:config_home_t:s0 .config
unconfined_u:object_r:dbus_home_t:s0 .dbus
unconfined_u:object_r:gconf_home_t:s0 .gconf
unconfined_u:object_r:gconf_home_t:s0 .gconfd
unconfined_u:object_r:gpg_secret_t:s0 .gnupg
unconfined_u:object_r:gconf_home_t:s0 .local
unconfined_u:object_r:ssh_home_t:s0 .ssh
Обратите внимание, что эта информация основана на моем домашнем каталоге, возможно, вам придется поискать и другие, но если вы правильно угадаете большинство из них, то вы более или менее вернетесь на правильный путь.