SELinux не дозволяє oddjobd-mkhomedir створювати домашній каталог користувача у нестандартному місці


9

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

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

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

Обов’язково змінив контекст для / даних.

 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якому повинні бути ваші власні контексти, які ви щойно додали за допомогоюsemanage

Щоб встановити ці контексти тимчасово, зверніться до chconкоманди:

chcon -Rv -t home_root_t /data 

1

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

semanage fcontext -a -e /home /data

Це гарантує, що всі правила оригінального місця розташування вдома також застосовуються до нового.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.