ปรากฎว่าอย่างน้อยจนถึง NFSv4.1, NFS ไม่รองรับบริบท SELinux อย่างเต็มรูปแบบ คุณสามารถตั้งค่าบริบทต่อเมานต์เท่านั้น ไม่ใช่ต่อไฟล์/ไดเร็กทอรี
ก่อนอื่นเราต้องอนุญาตให้ vncserver เข้าถึงไดเร็กทอรีโฮม NFS สิ่งนี้ได้รับการแก้ไขต้นน้ำใน tigervnc v1.12 หากไม่มีให้ใช้งานใน OS เราก็สามารถดึงการกำหนดค่า SELinux ใหม่จากอัปสตรีมและติดตั้งบนระบบของเราได้ สิ่งนี้ได้รับการบันทึกไว้ที่นี่: https://github.com/TigerVNC/tigervnc/issues/1189. นี่คือขั้นตอนที่สำคัญ:
- รับและแยกแหล่ง tigervnc v1.12
- ไปที่ <แหล่ง tigervnc>/unix/vncserver/selinux
- สร้างไฟล์นโยบาย SELinux ใหม่ (vncserver.pp) โดยเรียกใช้ "make vncserver.pp"
- บอก SELinux ว่าเรากำลังใช้โฮมไดเร็กทอรี NFS โดยเรียกใช้ "setsebool -P use_nfs_home_dirs on" ตัวเลือก -P ทำให้เป็นแบบถาวร
- ติดตั้งนโยบาย SELinux ใหม่: "semodule -X 300 -i vncsession.pp"
ปัญหาต่อไปที่เราพบคือ vncserver ไม่รอการเมานต์ NFS ของเรา คำแนะนำมากมายจะบอกให้คุณเพิ่ม "After=remote-fs.target" หรือ "After=home.mount" หรือ "RequiresMountsFor=/home" อย่างไรก็ตาม สิ่งนี้ใช้ไม่ได้กับระบบไฟล์ที่เมาท์โดย autofs (อย่างน้อยก็ไม่ใช่สำหรับฉัน)
เราต้องรอให้เกิด autofs แทน เพิ่ม "After=autofs.target" ลงในส่วน [Unit] ของไฟล์ [email protected] สำหรับฉันมันอยู่ที่ /usr/lib/systemd/system/[email protected] ดู: https://github.com/TigerVNC/tigervnc/issues/1284
ณ จุดนี้ ให้ทำตามเอกสารประกอบของระบบปฏิบัติการของคุณต่อไปเพื่อกำหนดค่าเซิร์ฟเวอร์ VNC