SELinux ไม่อนุญาตให้ oddjobd-mkhomedir สร้างไดเรกทอรีผู้ใช้ในตำแหน่งที่ไม่ได้มาตรฐาน


9

เรากำลังใช้ SSSD เพื่อตรวจสอบผู้ใช้บนเซิร์ฟเวอร์ CentOS oddjobd-mkhomedir ทำงานได้อย่างสมบูรณ์แบบเมื่อโฮมไดเร็กตอรี่เริ่มต้นคือ / home, แต่บนเซิร์ฟเวอร์เฉพาะ, เราต้องเปลี่ยนโฮมไดเร็กตอรี่เริ่มต้นเป็น / data, ซึ่งอยู่บนเมาท์ SAN.

ตอนนี้ทุกครั้งที่ผู้ใช้พยายามเข้าสู่ระบบพวกเขาจะถูกทิ้งลงในเปลือกทุบตีด้วยข้อความต่อไปนี้

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

นี่เป็นวิธีที่ถูกต้องในการแก้ไขปัญหานี้หรือไม่?


ไม่แน่ใจว่าสิ่งนี้เกี่ยวข้องกับปัญหาของคุณหรือไม่ แต่มันทำให้ฉันเศร้าใจในอดีต: linux.die.net/man/8/nfs_selinux
0xSheepdog

คำตอบ:


4

ส่วนสุดท้ายที่มี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 

1

เมื่อทำการย้ายโฮมไดเร็คทอรี่ทางออกที่ดีที่สุดน่าจะใช้กลไก EQUAL semanage fcontextตามที่อธิบายไว้ในคำตอบนี้เมื่อเซิร์ฟเวอร์ผิด :

semanage fcontext -a -e /home /data

นี่คือเพื่อให้แน่ใจว่ากฎทั้งหมดของตำแหน่งบ้านเดิมจะถูกนำไปใช้กับกฎใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.