Мы используем 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
Это делается для того, чтобы гарантировать, что все правила исходного местоположения дома будут применяться и к новому месту.