Мы используем SSSD для аутентификации пользователей на серверах CentOS. oddjobd-mkhomedir прекрасно работает, когда домашним каталогом по умолчанию является / home, но на конкретном сервере нам пришлось изменить домашний каталог по умолчанию на / data, который находится на SAN-монтировании.
Теперь каждый раз, когда пользователь пытается войти в систему, он попадает в оболочку bash со следующим сообщением.
Creating home directory for first.last.
Could not chdir to home directory /data/X.Y.local/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="x.y.local"
scontext=system_u:system_r:oddjob_mkhomedir_t:s0-s0:c0.c1023
tcontext=system_u:object_r:default_t:s0 tclass=dir
Убедитесь, что изменили контекст для / data.
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/x.y.local
semanage fcontext -a -t user_home_t "/data/x.y.local(/.*)?"
Это правильный способ обойти эту проблему?