ฉันส่งออกการแชร์ NFS จากเซิร์ฟเวอร์และติดตั้งจากไคลเอนต์ ฉันได้รับอนุญาตถูกปฏิเสธข้อผิดพลาดเมื่อพยายามเข้าถึง สงสัยว่าทำไม ทำให้การส่งออกสามารถเขียนได้ทั่วโลก สร้างไฟล์ที่นั่น และปรากฏว่าลูกค้าเข้าถึงไฟล์โดยใช้ผู้ใช้ที่แตกต่างจากที่ฉันคาดไว้
การส่งออกของฉัน:
/export fd48:2b50:6a95:a6db::4(ro,no_subtree_check,fsid=0,all_squash)
/export/backup-fs fd48:2b50:6a95:a6db::4(rw,no_subtree_check,root_squash,anonuid=34,anongid=34)
(หมายเหตุ: ที่อยู่ IP สาธารณะเปลี่ยนเป็นส่วนตัวด้วยเหตุผลด้านความเป็นส่วนตัว)
ความตั้งใจที่นี่คือการทำroot_squash
แต่ผู้ใช้รูทของลูกค้าควรถูกบีบไปที่ UID 34 ในเครื่อง (ผู้ใช้สำรอง); นี่คือจุดประสงค์ของanonuid
, anongid
. ดังนั้น หากการเอ็กซ์พอร์ตเป็นของ UID/GID 34 ผู้ใช้รูทของไคลเอ็นต์ควรได้รับการปฏิบัติเหมือนเป็นเจ้าของ แต่เมื่อฉันสร้างไฟล์ในการแชร์ ไฟล์นั้นจะกลายเป็นของnobody/nogroup
. ทำไม? ทุกอย่างตรงกันระหว่างสองระบบ: ทั้งคู่มี UID/GID 34 และทั้งสองชื่อbackup
.
นอกจากนี้ฉันต้องเปลี่ยน/export
เป็นrw
ซึ่งไม่สมเหตุสมผลสำหรับฉันเลยเพราะฉันต้องการให้รูทการส่งออกเป็นแบบอ่านอย่างเดียวและมีเพียง subdir backup-fs ที่เขียนได้เท่านั้น
ระบบเซิร์ฟเวอร์:
Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-81-generic x86_64)
นี่คือลักษณะการเมานต์บนไคลเอนต์:
my-nfs-server:/backup-fs on /var/backups/fs/data type nfs4 (rw,relatime,vers=4.2,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp6,timeo=600,retrans=2,sec=sys,clientaddr=fd48:2b50:6a95:a6db::4,local_lock=none,addr=fdc8:d5f9:cbbf:b206::2001)
สิ่งที่ทำให้ฉันสับสนเป็นพิเศษคือฉันมีการกำหนดค่าที่เหมือนกันนี้บนเซิร์ฟเวอร์ NFS อื่น และฉันเมานต์ด้วยไคลเอนต์ตัวเดียวกันและทำงานได้ตามที่ตั้งใจไว้ ฉันไม่พบความแตกต่างระหว่างการกำหนดค่าทั้งสองแม้ว่าฉันมี Ubuntu ที่เก่ากว่าและเวอร์ชันเคอร์เนลที่เกี่ยวข้องในระบบอื่น