SELinux nie zezwala dziwjobd-mkhomedir na utworzenie katalogu domowego użytkownika w niestandardowej lokalizacji

9

Używamy SSSD do uwierzytelniania użytkowników na serwerach CentOS. oddjobd-mkhomedir działa doskonale, gdy domyślnym katalogiem osobistym jest / home, ale na konkretnym serwerze musieliśmy zmienić domyślny katalog osobisty na / data, który jest podłączony na SAN.

Teraz za każdym razem, gdy użytkownik próbuje się zalogować, jest on upuszczany w powłoce bash z następującym komunikatem.

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$

Za każdym razem widzę następujący komunikat o odmowie 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

Upewnij się, że zmieniłeś kontekst dla / data.

 drwxr-xr-x. root root system_u:object_r:home_root_t:s0 data

Jeśli / data ma taki sam kontekst jak / home, dlaczego SELinux ogranicza dziwjobd do tworzenia /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

[AKTUALIZACJA]

Nie jestem pewien, czy jest to właściwy sposób na rozwiązanie tego problemu, ale po dodaniu następujących trzech wpisów użytkownik może teraz zalogować się i uzyskać dostęp do swoich katalogów domowych. Dla nowych użytkowników katalogi są tworzone na podstawie kontekstu zdefiniowanego poniżej.

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(/.*)?"

Czy to właściwy sposób na obejście tego problemu?

Abhi
źródło
Nie jestem pewien, czy ma to związek z Twoim problemem, ale w przeszłości spowodowało u mnie smutek: linux.die.net/man/8/nfs_selinux
0xSheepdog

Odpowiedzi:

4

Ta ostatnia sekcja z semanage fcontextjest poprawnym sposobem na trwałe ustawienie kontekstu tak. Musisz jednak uruchomić, restoreconaby to zadziałało .

restorecon -Rv /data

restoreconweźmie pod uwagę wszystko /etc/selinux/targeted/contexts/files/file_contexts.local, co powinno zawierać niestandardowe fcontexts, które właśnie dodałeśsemanage

Aby tymczasowo ustawić te konteksty, skorzystaj z chconpolecenia:

chcon -Rv -t home_root_t /data 
Patrick
źródło
1

Podczas przenoszenia katalogów domowych najlepszym rozwiązaniem jest prawdopodobnie użycie mechanizmu EQUAL semanage fcontextopisanego w tej odpowiedzi na temat błędu serwera :

semanage fcontext -a -e /home /data

Ma to na celu zapewnienie, że wszystkie reguły pierwotnej lokalizacji domowej zostaną zastosowane również do nowej.

mnk
źródło