SELinux tidak mengizinkan oddjobd-mkhomedir untuk membuat direktori home user di lokasi yang tidak standar

9

Kami menggunakan SSSD untuk mengautentikasi pengguna di server CentOS. oddjobd-mkhomedir berfungsi dengan baik ketika direktori home default adalah / home, tetapi pada server tertentu, kami harus mengubah direktori home default ke / data, yang ada di SAN mount.

Sekarang, setiap kali pengguna mencoba masuk, mereka akan jatuh ke bash shell dengan pesan berikut.

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$

Saya melihat pesan penolakan AVC berikut untuk setiap upaya:

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

Pastikan untuk mengubah konteks untuk / data.

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

Jika / data memiliki konteks yang sama dengan / home, mengapa SELinux membatasi oddjobd untuk membuat /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

[MEMPERBARUI]

Tidak yakin apakah ini cara yang benar untuk menyelesaikan masalah ini, tetapi setelah menambahkan tiga entri berikut, pengguna kini dapat masuk dan membuka direktori home mereka. Untuk direktori pengguna baru dibuat berdasarkan konteks yang ditentukan di bawah ini.

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

Apakah ini cara yang benar untuk mengatasi masalah ini?

Abhi
sumber
Tidak yakin apakah ini relevan dengan masalah Anda, tetapi itu telah menyebabkan saya bersedih di masa lalu: linux.die.net/man/8/nfs_selinux
0xSheepdog

Jawaban:

4

Bagian terakhir dengan itu semanage fcontextadalah cara yang benar untuk mengatur konteks secara permanen ya. Anda harus menjalankannya restoreconagar efeknya berlaku.

restorecon -Rv /data

restoreconakan mempertimbangkan apa pun yang ada di /etc/selinux/targeted/contexts/files/file_contexts.localdalamnya, yang seharusnya memiliki fcontext khusus yang baru saja Anda tambahkansemanage

Untuk mengatur konteks ini untuk sementara, lihat chconperintah:

chcon -Rv -t home_root_t /data 
Patrick
sumber
1

Ketika memindahkan direktori home, solusi terbaik mungkin menggunakan mekanisme EQUAL semanage fcontextseperti yang dijelaskan dalam jawaban ini pada kesalahan server :

semanage fcontext -a -e /home /data

Ini untuk memastikan bahwa semua aturan dari lokasi asal juga diterapkan ke yang baru.

mnk
sumber