SELinux блокирует самбу от чтения / var / log и всего содержимого
Когда SELinux отключен, мои пользователи samba (sssd / kerberos, подключенные к AD 2008 R2) могут просматривать мой общий каталог / var / log. При включенном SELinux это не работает.
Мой / var / log / messages сниппет
Aug 29 13:28:38 servername kernel: [11625.509586] type=1400 audit(1472491718.859:35): avc: denied { read } for pid=7492 comm="smbd" name="spamfilter-all.log" dev="dm-3" ino=26 scontext=system_u:system_r:smbd_t:s0 tcontext=unconfined_u:object_r:var_log_t:s0 tclass=lnk_file
Aug 29 13:28:38 servername kernel: [11625.626225] type=1400 audit(1472491718.975:36): avc: denied { getattr } for pid=7492 comm="smbd" path="/var/log/remote/192.168.11.1" dev="dm-3" ino=1966096 scontext=system_u:system_r:smbd_t:s0 tcontext=unconfined_u:object_r:var_log_t:s0 tclass=lnk_file
Бег audit2allow < ~/logsnippet
показывает
#============= smbd_t ==============
#!!!! This avc can be allowed using one of the these booleans:
# samba_export_all_ro, samba_export_all_rw
allow smbd_t var_log_t:lnk_file { read getattr };
Из https://wiki.centos.org/HowTos/SELinux, Я попытался использовать audit2allow для создания модуля, который затем загрузил:
audit2allow < ~/logsnippet -M allow_samba_var_log
semodule -i allow_samba_var_log.pp
Модуль установлен, так как вижу его в semodule -l | grep allow
но я все еще не могу получить доступ к / var / log через самбу.
В итоге я включил логическое значение samba_export_all_ro.
Когда SELinux находится в принудительном режиме, только первое отклонение будет зарегистрировано, потому что отказ вызывает сбой вызова.
Вам следует временно запустить вашу систему в разрешающем режиме (setenforce 0
). Это вызовет все отказы регистрироваться не только первые. После того, как вы полностью опробовали свою систему, вы должны использовать audit2why и audit2allow для зарегистрированных сообщений, чтобы понять, что происходит, и создать собственный модуль.
Если вас устраивают результаты аудита, вы можете установить настраиваемый модуль.
Следите за своим журналом аудита на предмет дополнительных отказов и предпринимайте соответствующие действия.
Когда вы будете счастливы, установите принудительный режим (setenforce 1
)
Примечание: вы можете
kill -USR1 <PIDofAuditd>
чтобы программа auditd очистила журнал и запустила другую, чтобы легко проверить, что вы удалили все соответствующие отказы.
В исходном вопросе говорилось, что я не собираюсь использовать samba_export_all_ro
логическое. К сожалению, это было единственное решение, которое я нашел.
Итак, чтобы решить проблему, я запустил
setsebool samba_export_all_ro 1
Вы должны сначала убедиться, что у вас есть настройка контекстов, прежде чем возиться с пользовательскими модулями.
Взгляните на ls -Z, контекст samba_share_t должен быть установлен до того, как демоны смогут получить доступ к каталогу.
Если это не так, установите его и попробуйте еще раз:
chcon -t samba_share_t /var/log