ฉันรู้สึกรำคาญนิดหน่อยจาก NFS4 บน Linux ดูเหมือนว่าข้อมูล 'ออกไปข้างนอก' บางส่วนนั้นขัดแย้งกับข้อมูลอื่นและข้อมูลอื่นนั้นหายาก ดังนั้นนี่คือสองสิ่งที่ดึงดูดความสนใจของฉันหวังว่ามีใครบางคนที่อยู่ในนั้นสามารถหลั่งน้ำตาแสงนี้
คำถามนี้เน้นที่ NFS4 โดยไม่ต้องใช้ Kerberos เป็นต้น
1. การส่งออก
มีข้อมูลที่ไม่ชัดเจนในexports
manpage ในโครงสร้างของ / etc / exports
อ้างจากexports(5)
:
นอกจากนี้แต่ละบรรทัดอาจมีข้อกำหนดอย่างน้อยหนึ่งรายการสำหรับตัวเลือกเริ่มต้นหลังจากชื่อเส้นทางในรูปแบบของเส้นประ ("-") ตามด้วยรายการตัวเลือก
รายการตัวเลือกจะใช้สำหรับการส่งออกที่ตามมาทั้งหมดในบรรทัดนั้นเท่านั้น
"การส่งออกที่ตามมาในบรรทัดนั้น" หมายความว่าอย่างไร
1.2 fsid=0
ไม่ต้องการอีกแล้วเหรอ?
ฉันค้นหา fsid เมื่อพบความคิดเห็นในรายการ linux-nfs ที่ระบุว่า fsid = 0 ไม่จำเป็นอีกต่อไป ตอนนี้ฉันสับสนฉันต้องใช้กับ nfs4 หรือไม่?!
2. ไดเร็กทอรีที่ไม่ได้ถูกเอ็กซ์พอร์ตยังคง mountable
พูดว่าฉันมีต้นไม้ต่อไปนี้:
/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian
และฉันมีรายการต่อไปนี้ในรายการ fstab นี้:
/dev/disk/by-label/users /mnt/users ext4 defaults 0 0
/dev/disk/by-label/distr /mnt/distr ext4 defaults 0 0
/mnt/users /exp/users none bind 0 0
/mnt/distr /exp/distr none bind 0 0
และการส่งออกของฉันเป็นแบบนี้:
/exp 192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)
และexportfs -arv
แสดงให้เห็นว่า:
exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp
ถ้าเช่นนั้นทำไมฉันสามารถทำสิ่งนี้และไม่ผิดพลาดกับลูกค้า:
mount -t nfs4 server:/exp/users /tmp/test
แม้ว่า/exp/users
จะไม่ได้ถูกส่งออก? ฉันไม่ได้ส่งออกไดเรกทอรีนี้และในขณะที่ฉันไม่เห็นเนื้อหาของ/dev/disk/by-label/users
นอกจากว่าฉันจะระบุcrossmnt
ฉันก็ยังสามารถเขียนไปยังไดเรกทอรี ทุกสิ่งที่ฉันเขียนไปที่นั่นไปยังไดเรกทอรีพื้นฐาน/exp/users
ซึ่งสามารถเห็นได้เมื่อฉันumount /exp/users; ls /exp/users
..
3. กรณีแปลก ๆ showmount -d server
ตามที่ระบุโดยrpc.mountd(8)
คำสั่งนี้ควรแสดงไดเร็กทอรีที่เมาต์โดยไคลเอ็นต์ในปัจจุบันหรือรายการเก่าใน/var/lib/nfs/rmtab
ซึ่งสามารถอ่านได้:
rpc.mountd daemon ลงทะเบียนคำร้องขอ MNT ที่สำเร็จทุกครั้งโดยเพิ่มรายการในไฟล์ / var / lib / nfs / rmtab เมื่อได้รับคำร้องขอ UMNT จากไคลเอ็นต์ NFS rpc.mountd จะลบรายการที่ตรงกันออกจาก / var / lib / nfs / rmtab ตราบใดที่รายการควบคุมการเข้าถึงสำหรับการส่งออกนั้นอนุญาตให้ผู้ส่งนั้นเข้าถึงการส่งออกได้
( ... )
อย่างไรก็ตามโปรดทราบว่ามีเพียงเล็กน้อยที่จะรับประกันว่าเนื้อหาของ / var / lib / nfs / rmtab นั้นถูกต้อง ลูกค้าสามารถเข้าถึงการส่งออกได้แม้จะเรียกใช้ UMNT ต่อไป หากไคลเอ็นต์รีบูตโดยไม่ส่งการร้องขอ UMNT รายการเก่ายังคงอยู่สำหรับไคลเอ็นต์นั้นใน / var / lib / nfs / rmtab
หลังจากอ่านบทความนี้ฉันก็สงสัยว่า:
- ไม่ปลอดภัยอย่างยิ่งที่จะเพียงแค่เปิดเผยข้อมูลลูกค้าประเภทนี้
- ผู้ดูแลระบบเซิร์ฟเวอร์ที่ไม่รู้ตัวถูกผูกไว้กับ rmtab ที่มีไคลเอนต์ค้างจำนวนมาก
- นี่คือเหตุผลที่ไคลเอ็นต์ที่เมาต์ไดเร็กทอรี nfs4 พร้อมกับ
mount -v
ดูผลลัพธ์เช่น "ไม่มีอะไรถูกเมาท์" แม้ว่าจะมีบางอย่างถูกเมาท์หรือไม่?
ฉันมีคำถามอื่น ๆ มากมายเกี่ยวกับ nfs4 แต่ฉันจะเก็บไว้ที่นี้สักครู่ .. :)