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

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

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

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

решение1

Последний раздел с 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 

решение2

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

semanage fcontext -a -e /home /data

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

Связанный контент