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

9

Мы используем 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(/.*)?"

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

Аби
источник
Не уверен, имеет ли это отношение к вашей проблеме, но в прошлом это вызывало у меня горе: linux.die.net/man/8/nfs_selinux
0xSheepdog

Ответы:

4

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

restorecon -Rv /data

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

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

chcon -Rv -t home_root_t /data 
Патрик
источник
1

При перемещении домашних каталогов лучшим решением, вероятно, является использование механизма EQUAL, semanage fcontextкак описано в этом ответе на сбое сервера :

semanage fcontext -a -e /home /data

Это необходимо для того, чтобы все новые правила исходного местоположения также применялись к новому.

МНК
источник