เหตุใดจึงไม่สามารถรูทเครื่องหนึ่งเปลี่ยนเนื้อหาที่เมาท์ได้จากเครื่องอื่น?


14

บนเซิร์ฟเวอร์ NFS ของฉันฉันมีการเอ็กซ์ปอร์ตต่อไปนี้:

#NFS exports Database
/shared -alldirs -network=192.168.1 -mask=255.255.255.0

บนไคลเอ็นต์ NFS ของฉัน:

192.168.1.7:/shared /shared nfs rw 0 0

เห็นได้ชัดว่าในฐานะ root บนเซิร์ฟเวอร์ฉันสามารถทำสิ่งที่ฉันต้องการ อย่างไรก็ตามในไคลเอนต์ผู้ใช้ปกติของฉัน 'gabe' สามารถทำการเปลี่ยนแปลงเมานต์ nfs (สมมติว่าฉันมีสิทธิ์) แต่รากไม่สามารถ

ในฐานะผู้ใช้ทั่วไปของฉัน:

gabe@client$ cd /shared
gabe@client$ ls -l
total 8
drwxrwxrwx  4 gabe  wheel   512 Mar 20 19:20 tmp
gabe@client$ cd tmp
gabe@client$ touch test.txt
gabe@client$ rm test.txt

ในฐานะที่เป็นราก:

# cd /shared/tmp
# touch test.txt
touch: test.txt: Permission denied

อีกครั้งนี่คือทั้งหมดที่อยู่ในฝั่งไคลเอ็นต์ของNFS และฉันสงสัยว่ามันอาจจะมีบางอย่างที่เกี่ยวข้องกับตัวเลือก -maproot นี่เป็นครั้งแรกที่ฉันตั้งค่า NFS และฉันเพิ่งสังเกตเห็นลักษณะเฉพาะนี้ ฉันกำลังจะอ่านตอนนี้เพื่อดูว่าฉันสามารถเข้าใจเรื่องนี้ได้หรือไม่ แต่ถ้าใครมีความเข้าใจลึกซึ้งฉันจะขอบคุณมัน

คำตอบ:


18

NFS ได้รับการออกแบบโดยมีแนวคิดว่ารหัสผู้ใช้และกลุ่มจะเหมือนกันในทุกเครื่องในเครือข่าย สำหรับผู้ใช้ทั่วไปมันใช้งานได้ดี แต่ UID ของรูทจะเป็น 0 เสมอและเพียงเพราะคุณมีรูทในหนึ่งกล่องก็ไม่ได้หมายความว่าคุณควรมีสิทธิ์เข้าถึงรูทของทุก ๆ เครื่องในเครือข่าย

ดังนั้น NFS จึงปฏิบัติต่อรูตเป็นพิเศษ โดยค่าเริ่มต้นรูทจะถูกแมปกับnobodyผู้ใช้ซึ่งโดยปกติจะไม่มีสิทธิ์ในการเขียน -maprootตัวเลือกที่ช่วยให้คุณสามารถเปลี่ยนวิธีการรากจะถูกจัดการ BSD -maproot=rootสอดคล้องกับno_root_squashตัวเลือกของ Linux


ใช่แน่นอน. นี่เป็นการแก้ไขปัญหาของฉัน หน้าคนที่ฉันกำลังอ่านนั้นเป็นความลับเล็ก ๆ น้อย ๆ (หรือความเข้าใจของฉัน) เกี่ยวกับสิ่งที่ maproot ทำ ขอบคุณ!
เกบ

noob อื่นที่นี่ ฉันสงสัยว่าพวกคุณอาจรู้วิธีที่จะบอกว่าไดรฟ์ NFS ได้รับการกำหนดค่าให้ใช้-maprootตัวเลือกโดยไม่ต้องเข้าถึงเซิร์ฟเวอร์ NFS หรือไม่
John

@ John แตกต่างกันมากพอที่คุณควรถามคำถามใหม่แทนที่จะเพิ่มความคิดเห็น
cjm

5

นั่นเป็นพฤติกรรมทั่วไปที่มีการใช้ NFS แบบดั้งเดิม การแม็พผู้ใช้ NFS ถูกดำเนินการโดยไม่คำนึงถึงบริบทดังนั้นการเข้าถึงทั้งหมดโดยไคลเอ็นต์รูตจะต้องถูกแม็พกับผู้ใช้เฉพาะ ( nobodyโดยค่าดีฟอลต์) ดังนั้นพฤติกรรมที่แปลกประหลาดนี้ซึ่งรากลูกค้าไม่สามารถเข้าถึงไฟล์ของคุณได้โดยตรง แต่สามารถsu gabeเข้าถึงได้

(NFS รุ่น“ ล่าสุด” เช่น NFSv4 และ NFSv3 อาจอนุญาตพฤติกรรม saner หากสนับสนุนทั้งสองด้าน แต่ฉันไม่ทราบรายละเอียด)

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