การแม็พ UID และ GID ของผู้ใช้โลคัลกับการแชร์ NFS ที่เมาท์


36

ฉันมีเซิร์ฟเวอร์ที่มี NFSv4 ฉันกำลังติดตั้งเนื้อหาของโฮมโฟลเดอร์ของผู้ใช้ระยะไกลไปยังโฮสต์ท้องถิ่น สามารถอ่านและเขียนเนื้อหาได้ แต่เมื่อฉันกำลังตรวจสอบความเป็นเจ้าของไฟล์ที่ปริมาณการเชื่อมต่อจากโฮสต์ท้องถิ่นพวกเขาทั้งหมดเป็นของผู้ใช้ระยะไกลและกลุ่มที่เกี่ยวข้อง (512) มีวิธีใดที่ทำให้ดูเหมือนเป็นของผู้ใช้โลคัลและกลุ่ม (1,000) บนโลคัลโฮสต์

/ etc / exportsบนรีโมตโฮสต์ (IP คือ 192.168.1.110)

/home/user512 192.168.1.142(rw,sync,all_squash,anonuid=512,anongid=512)

/ etc / fstabบนโลคัลโฮสต์ (IP คือ 192.168.1.142)

192.168.1.110:/home/user512    /home/localuser/projects/project512   nfs    rw,hard,intr,rsize=32768,wsize=32768    0       0

คำตอบ:


34

นี่คือสิ่งที่ idmapping ควรจะทำ ก่อนอื่นให้เปิดใช้งานบนไคลเอนต์และเซิร์ฟเวอร์:

# echo N > /sys/module/nfs/parameters/nfs4_disable_idmapping

ล้างแคช idmap และรีสตาร์ท idmap daemon:

# nfsidmap -c
# service rpcidmapd restart

ตอนนี้บนเซิร์ฟเวอร์และไคลเอ็นต์จะส่งแทนรหัสตัวเลขผู้บริหารสายเช่น bob@YOURDOMAIN.COM คุณต้องมีบัญชีbobในทั้งโฮสต์ - ไคลเอนต์และเซิร์ฟเวอร์ อย่างไรก็ตามรหัสตัวเลขอาจแตกต่างกัน


7
Ftr บนเซิร์ฟเวอร์ nfs พา ธ คือ / sys / module / nfsd / พารามิเตอร์ / nfs4_disable_idmapping (nfsd ไม่ใช่ nfs)
Mike Purcell

2
ไม่มีบริการrpcidmapdบนไคลเอนต์ Linux Mint ของฉัน
Corni

1
คำถามเกี่ยวกับคำตอบนี้: จะ echo N > /sys/module/nfsd/parameters/nfs4_disable-idmapping ทำการตั้งค่านี้อย่างถาวรหรือฉันต้องรีเซ็ตทุกครั้งหลังจากรีบูตหรือไม่
mauritslamers

4
ภายใต้ Ubuntu บริการจะถูกเรียกidmapdแทนrpcidmapd
mauritslamers

2
Debian => idmapd จากแพคเกจ nfs ทั่วไปบริการชื่อnfs-idmapd
Philippe Gachoud

5

คุณมีชิ้นส่วนทั้งหมดที่นั่น จากหน้า man exportfs all_squashแมป uids และ gids ทั้งหมดกับรุ่นที่ไม่ระบุชื่อ สิ่งที่คุณเขียนบังคับให้ค่าเหล่านั้นเป็น 512 หากคุณเปลี่ยนเป็น 1,000 เซิร์ฟเวอร์ nfs บนโฮสต์ระยะไกลจะทำให้ทุกอย่าง 1,000 และเข้าถึงควรได้รับ


uid ของฉันบนไคลเอนต์คือ 1,000, uid ของผู้ใช้ที่มีชื่อเดียวกันบนเซิร์ฟเวอร์คือ 1003 ฉันได้ลองตั้งค่าanonuid=1000,anongid=1000และanonuid=1003,anongid=1003(และเริ่มการทำงานของ nfsserver ใหม่และยกเลิกการติดตั้ง / แชร์ซ้ำ) และไม่ทำงาน Downvoting เนื่องจากคำตอบนี้ดูเหมือนจะไม่ทำงาน
Phrogz

เพียงเพื่อยืนยันรายการส่งออกและ fstab ของคุณคืออะไร
กลายเป็น

1
/home/gkistner *(async,rw,all_squash,anonuid=1000,anongid=1000,no_subtree_check)ในการส่งออกและ10.20.118.112:/home/gkistner /mnt/r2 nfs rsize=8192,wsize=8192,timeo=14,intrใน fstab
Phrogz

3

บนไคลเอ็นต์ nfs ของคุณให้แก้ไข /etc/idmapd.conf และเปลี่ยน

[Mapping]

Nobody-User = myappuser
Nobody-Group = myappuser

หลังจากนี้ให้รีสตาร์ทเซอร์วิส nfs

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