SELinux не позволяет oddjobd-mkhomedir создавать пользовательский домашний каталог в нестандартном месте

Мы используем SSSD для аутентификации пользователей на CentOS-серверах. oddjobd-mkhomedir отлично работает, когда домашний каталог по умолчанию является / home, но на конкретном сервере нам пришлось изменить домашний каталог по умолчанию на / data, который находится на жестком диске SAN.

Теперь, каждый раз, когда пользователь пытается войти в систему, они удаляются в оболочку bash со следующим сообщением.

Creating home directory for first.last. Could not chdir to home directory /data/XYlocal/first.last: No such file or directory -bash-4.1$ 

Я вижу следующее сообщение об отказе AVC для каждой попытки:

 type=AVC msg=audit(1492004159.114:1428): avc: denied { create } for pid=2832 comm="mkhomedir" name="xylocal" scontext=system_u:system_r:oddjob_mkhomedir_t:s0-s0:c0.c1023 tcontext=system_u:object_r:default_t:s0 tclass=dir 

Не забудьте изменить контекст для / данных.

  drwxr-xr-x. root root system_u:object_r:home_root_t:s0 data 

Если / data имеет тот же контекст, что и / home, почему SELinux ограничивает oddjobd для создания /data/XYlocal/first.last?

 # sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 24 Policy from config file: targeted 

[ОБНОВИТЬ]

Не уверен, что это правильный способ решить эту проблему, но после добавления следующих трех записей пользователь теперь может войти в свои домашние каталоги. Для новых каталогов пользователей создаются на основе контекста, определенного ниже.

 semanage fcontext -a -t home_root_t /data semanage fcontext -a -t user_home_dir_t /data/xylocal semanage fcontext -a -t user_home_t "/data/xylocal(/.*)?" 

Это правильный способ обойти эту проблему?

Большое спасибо,

~ Абхи

Этот последний раздел с semanage fcontext – это правильный способ окончательного установки контекста yes. Вам нужно будет запустить restorecon чтобы он вступил в силу.

 restorecon -Rv /data 

restorecon будет учитывать что-либо в /etc/selinux/targeted/contexts/files/file_contexts.local , который должен иметь ваши настраиваемые контексты, которые вы только что добавили, используя semanage

Чтобы временно установить эти контексты, обратитесь к команде chcon :

 chcon -Rv /data