การทำความเข้าใจ NFS4 (เซิร์ฟเวอร์ Linux)


26

ฉันรู้สึกรำคาญนิดหน่อยจาก NFS4 บน Linux ดูเหมือนว่าข้อมูล 'ออกไปข้างนอก' บางส่วนนั้นขัดแย้งกับข้อมูลอื่นและข้อมูลอื่นนั้นหายาก ดังนั้นนี่คือสองสิ่งที่ดึงดูดความสนใจของฉันหวังว่ามีใครบางคนที่อยู่ในนั้นสามารถหลั่งน้ำตาแสงนี้

คำถามนี้เน้นที่ NFS4 โดยไม่ต้องใช้ Kerberos เป็นต้น

1. การส่งออก

มีข้อมูลที่ไม่ชัดเจนในexportsmanpage ในโครงสร้างของ / 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

หลังจากอ่านบทความนี้ฉันก็สงสัยว่า:

  1. ไม่ปลอดภัยอย่างยิ่งที่จะเพียงแค่เปิดเผยข้อมูลลูกค้าประเภทนี้
  2. ผู้ดูแลระบบเซิร์ฟเวอร์ที่ไม่รู้ตัวถูกผูกไว้กับ rmtab ที่มีไคลเอนต์ค้างจำนวนมาก
  3. นี่คือเหตุผลที่ไคลเอ็นต์ที่เมาต์ไดเร็กทอรี nfs4 พร้อมกับmount -vดูผลลัพธ์เช่น "ไม่มีอะไรถูกเมาท์" แม้ว่าจะมีบางอย่างถูกเมาท์หรือไม่?

ฉันมีคำถามอื่น ๆ มากมายเกี่ยวกับ nfs4 แต่ฉันจะเก็บไว้ที่นี้สักครู่ .. :)


รายการส่งออกอาจไม่ชอบระบบไฟล์ที่ผูกติดอยู่ของคุณ ลองก่อนด้วย / mnt / users ...
jirib

นี่เป็นเรื่องเกี่ยวกับ nfs4 ซึ่งต้องใช้ "ระบบไฟล์หลอก" เช่นลำดับชั้นของระบบไฟล์แบบต้นไม้ คุณช่วยอธิบายสิ่งที่คุณหมายถึงได้ไหม
drumfire

หน้าวิกินี้ยังอ้างว่าไม่จำเป็นต้องใช้ fsid = 0 อีกต่อไป: wiki.linux-nfs.org/wiki/index.php/…แต่ 'การส่งออกของมนุษย์' ยังหมายถึงความต้องการ
SystemParadox

1
ฉันอยากจะบอกว่าฉันสนับสนุนคำถามนี้ เช่นเดียวกับคุณฉันได้สังเกตสิ่งต่าง ๆ มากมายและมีคำถามเดียวกันและอีกมากมาย ดูเหมือนความยุ่งเหยิง f *
พายุไซโคลน

1
มีคำถามมากเกินไปในหนึ่งโพสต์ @ ดรัมไฟร์คุณช่วยแบ่งมันออกเป็นโพสต์คำถามง่าย ๆ เพิ่มเติมได้ไหม?
Victor Yarema

คำตอบ:


7

คำถามที่ยอดเยี่ยมเน้นจุดที่ใหญ่กว่าด้วย IMO ของเอกสาร นี่คือความพยายามที่จะตอบคำถามทั้งหมด:

"การส่งออกที่ตามมาในบรรทัดนั้น" หมายความว่าอย่างไร

ตัวอย่างน่าจะง่ายที่สุดที่นี่:

/export/stuff -rw 10.0.0.54 10.0.0.55

เทียบเท่ากับ:

/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)

คือfsid=0ไม่จำเป็นอีกต่อไป?

ขึ้นอยู่กับกรณีการใช้งานของคุณ ดูเหมือนว่าคุณกำลังส่งออกระบบไฟล์ที่ใช้ดิสก์เป็นประจำจากส่วนที่เหลือของแบบสอบถามของคุณในกรณีนี้คุณควรปล่อยfsid=0(ซึ่งใน nfsv4 เปลี่ยนพฤติกรรมเพื่ออ้างอิงระบบไฟล์รูทของการส่งออก)

หากต้องการเปลี่ยนพฤติกรรมนี้ให้ลบตัวเลือก no_subtree_check


rmtab- สิ่งที่เกี่ยวข้อง

  • การจัดการrmtabความเสี่ยงด้านความปลอดภัยหรือไม่?
    ฉันเดาว่ามันขึ้นอยู่กับกรณีการใช้งานของคุณเพื่อตอบว่าในเครือข่ายของฉันจะไม่แสดงข้อมูลรั่วไหลที่น่าเชื่อถือ แต่ฉันสามารถดูกรณีที่อาจเกิดขึ้น
  • จะไม่rmtabเต็มไปด้วยรายการค้าง?
    อาจเป็นไปได้อีกครั้งขึ้นอยู่กับสถานการณ์การใช้งาน / กรณีใช้งานของคุณ
  • นี่คือสาเหตุที่ลูกค้าบางคนที่ทำงานmount -vผิดพลาดเห็น "ไม่มีอะไรติดตั้งอยู่"?
    ฉันยังไม่เจอสิ่งนี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.