Вчера я добавил диск к полю Centos6 VM, создал / домашняя точка монтирования на диске и затем переместился, пользователь (jenkins в этом случае) к нему к свободному располагают с интервалами от / точка монтирования.
Это, казалось, хорошо работало и полномочия и маркирует, все выглядят правильными, но более ранний сегодня я начал видеть проблемы, где я был неспособен к SSH на поле как jenkins пользователь от любого поля. SSHing к полю как корень и su
луг к jenkins хорошо работал. К тому же, если я сделал a service sshd stop
и затем /usr/sbin/sshd
Я мог затем соединиться с полем непосредственно как jenkins пользователь.
После большой отладки я в конечном счете определил отказы SELinux в /var/log/audit/audit.log
как так:
type=AVC msg=audit(1428584552.564:187): avc: denied { search } for pid=1798 comm="sshd" name="/" dev=sdd1 ino=2 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:file_t:s0 tclass=dir
type=AVC msg=audit(1428584552.567:188): avc: denied { getattr } for pid=1798 comm="sshd" path="/home" dev=sdd1 ino=2 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:file_t:s0 tclass=dir
Установка SELinux к разрешающему затем позволила мне снова соединяться как jenkins пользователь удаленно.
Я не являюсь слишком великим с SELinux, но после прочтения (снова) учебных руководств хинду на SELinux, из которого я считал эти ошибки как sshd пытающийся получить доступ и / и / домой с системным контекстом system_u:system_r:sshd_t:s0
. Вместо этого эти конечные точки маркированы как system_u:object_r:file_t:s0
который является, по крайней мере, что / корневой каталог маркирован как (не слишком уверенный, как видеть маркировку для/).
Мне те маркировки выглядят правильными для тех каталогов, и я не слишком уверен, почему это пытается искать маркировку sshd_t до сих пор дерево каталогов.
Рабочий ls-laZ для получения важных частей (.ssh папка и authorized_keys) дает мне:
drwx------. jenkins jenkins unconfined_u:object_r:ssh_home_t:s0 .ssh
и
-rw-------. jenkins jenkins unconfined_u:object_r:ssh_home_t:s0 authorized_keys
Который выглядит одинаково как другие флажки, которые я устанавливаю, и они хорошо работают.
Что я должен сделать, чтобы заставить SELinux сотрудничать так, я могу вернуться к осуществлению?
Править: Я попробовал umounting / домой и использующий restorecon, чтобы попытаться повторно маркировать каталог благодаря предложению Michael Hampton, но это не изменило маркировку на каталоге и, как упомянуто выше system_u:object_r:file_t:s0
маркировка для / домой выглядит правильной по сравнению с другими полями, которые хорошо работают.
Существует ли способ, которым я могу изменить системный контекст sshd при попытке получить доступ к этому каталогу?
Вы смотрите не в нужные каталоги.
Ваши отказы AVC касаются конкретно контекстов на /
и / home
соответственно , а не в каком-либо файле внутри них.
Это заставляет меня подозревать, что у вас есть не только те записи каталога, которые неправильно помечены.
Вот как я бы восстановил:
/ home
. Это необходимо, потому что мы хотим восстановить контекст файла в точке монтирования в родительской файловой системе, а также контексты файлов в дочерней файловой системе. Восстановить контексты файлов для точки монтирования / home
.
restorecon -v / home
Перемонтировать / home
.
Восстановить контексты файлов для всей системы на всякий случай. Это можно сделать одним из двух способов:
прикоснуться к /.autorelabel
и перезагрузиться. Во время запуска система будет помечена заново. restorecon -r -v /
и перезагрузится, когда закончится. Я обычно использую этот метод, поскольку он дает вам полный список контекстов файлов, которые были изменены. После изменения метки и перезагрузки вы можете безопасно вернуться к принудительному применению SELinux.