ฉันจะทำแผนที่ NFSv4 UID ข้ามระบบที่มี UID ไม่ตรงกันได้อย่างไร


11

ฉันทำงานในแล็บที่มีระบบ Ubuntu สามระบบและฉันต้องการข้ามระบบไฟล์บางอย่างผ่าน NFS อย่างไรก็ตามในขณะที่ระบบมีชื่อผู้ใช้เดียวกัน UID และ GID ไม่ตรงกันเนื่องจากทั้งสามระบบถูกตั้งค่าแยกกัน เมื่อฉันเมานระบบไฟล์ NFS จากระบบหนึ่งไปอีกระบบหนึ่งความเป็นเจ้าของจะแสดงผิด ตัวอย่างเช่นหาก UID 1000 เป็นอลิซบน server1 และ UID เดียวกันคือ 1,000 จะเป็น bob บน server2 ดังนั้นเมื่อ server1 เมานต์ระบบไฟล์ที่เอ็กซ์พอร์ตของ server2 ไฟล์ของ bob จะเป็นเจ้าของโดย alice

ดังนั้นมีวิธีใดที่จะทำให้ NFS (v4) แปลง UID ระหว่างเซิร์ฟเวอร์ผ่านชื่อผู้ใช้ที่เกี่ยวข้อง? Googling สำหรับสิ่งนี้ฉันได้เห็นการอ้างอิงจำนวนมากถึง Kerberos, LDAP, หรือ NIS ซึ่งดูเหมือนว่าเป็นงานมากเกินไปสำหรับงานง่าย ๆ และอาจเป็นไปไม่ได้เนื่องจากระบบเหล่านี้ไม่ได้รับการจัดการจากส่วนกลาง ลิงค์นี้ดูเหมือนจะบ่งบอกว่าสิ่งที่ฉันถามเป็นไปไม่ได้ ถูกต้องหรือไม่

แก้ไข: ฉันได้ลองการกำหนดค่าทุกอย่างเพื่อ/etc/idmapd.confให้ฉันสามารถคิดหรือค้นหาบนอินเทอร์เน็ตและในขณะที่กระบวนการ idmapd ทำงานอย่างชัดเจนจนถึงตอนนี้ฉันยังไม่เห็นหลักฐานใด ๆ ที่ NFS พยายามใช้อยู่เลยและ มันไม่เคยมีผลกระทบใด ๆ ต่อการรายงาน ID ผู้ใช้ในการเมาท์ NFS


1
ฉันเชื่อว่าสิ่งที่ง่ายที่สุดสำหรับคุณคือการนำสิ่งของมาเรียงลำดับ คุณอาจอยู่กับรูปแบบการตรวจสอบสิทธิ์ปัจจุบันของคุณเนื่องจากคุณมีเพียงสามกล่อง แต่คุณต้องซิงค์ UID ของผู้ใช้ทั้งหมด / GID ในช่องของคุณ นี่ไม่ใช่งานยากจริง ๆ
Serge

ใช่นั่นคือสิ่งที่ฉันทำในที่สุด
Ryan C. Thompson

คำตอบ:


5

วิธีที่ดีที่สุดที่ฉันเห็นคือให้คุณบังคับให้เซิร์ฟเวอร์ทั้งหมดใช้ GID และ UID เดียวกันสำหรับผู้ใช้แต่ละคน ตอนนี้ ... ฉันแค่พูดถึงไฟล์และ / หรือไดเรกทอรีเท่านั้น

สิ่งที่ฉันจะทำในกรณีนี้คือ:

  • ลงทะเบียน UID และ GID ที่ใช้งานอยู่ในปัจจุบัน
  • แก้ไข/etc/passwdและ/etc/groupจับคู่กลุ่มบนเซิร์ฟเวอร์ทั้งหมด ควรเป็น UID และ GID ใหม่ดังนั้นขั้นตอนต่อไปจะเร็วขึ้น
  • เปิดใช้งาน (ใช้เวลาพอสมควร):

    find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+
    find / -user  <OLD_UID> -exec chown <NEW_UID> '{}' \+
    

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

2
จาก find man: -group gname True หากไฟล์เป็นของกลุ่ม gname หาก gname เป็นตัวเลขและไม่ปรากฏในฐานข้อมูลกลุ่ม (4) จะถูกใช้เป็น ID กลุ่ม
BitsOfNix

1

NFSv4 รองรับการจับคู่ id เมื่อเปิดใช้งาน NFS จะส่งชื่อผู้ใช้แทนรหัสตัวเลข โฮสต์ที่มีตัวเลข uid ที่แตกต่างกันสำหรับผู้ใช้เดียวกันนั้นไม่ใช่ปัญหาเนื่องจากชื่อผู้ใช้ถูกแมปกับ uids บนโฮสต์

การจับคู่รหัสจะใช้กับโหมดความปลอดภัยของ Kerberos ( sec=krb5) เสมอ

การแมปรหัสยังสามารถใช้ในโหมด AUTH_UNIX (ค่าเริ่มต้นsec=sys) ฉันได้อธิบายรายละเอียดการกำหนดค่าในคำตอบ: วิธีการรับ NFSv4 idmap กับการทำงานกับวินาที

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