การจับคู่ ID ผู้ใช้กับ NFS บน Synology NAS


20

ฉันมีกล่อง Synology NAS (ใช้ DSM 5.1) และฉันส่งออกไดเรกทอรีผ่าน NFS ฉันพยายามที่จะติดตั้งบนกล่อง Ubuntu ของฉัน

มันใช้งานได้ดี แต่ฉันมีปัญหากับการจับคู่ผู้ใช้และกลุ่ม บนกล่อง Ubuntu ฉันเป็น uid 1,000 (roger), gid 1000 (roger) ใน Synology ฉันมี uid 1026 (roger) กลุ่ม 100 (ผู้ใช้)

ถ้าฉันใช้ NFSv3 มันจะใช้ค่าตัวเลข uid / gid ซึ่งหมายความว่าความเป็นเจ้าของถูกทำให้สับสนบน Synology

ถ้าฉันจะเข้าถึง NFS mount จากกล่อง Ubuntu เดียวกันโดยใช้ผู้ใช้รายเดียวกันนี่ก็ใช้ได้ แต่ฉันยังเข้าถึงไดเรกทอรีจากกล่อง Windows โดยใช้ CIFS (SMB) ซึ่งหมายความว่าสิทธิ์นั้น ไม่ถูกต้อง.

ถ้าฉันใช้ NFSv4 ( mount -o nfsvers=4) ด้วยการตั้งค่าเริ่มต้นใน Synology ไฟล์ที่เป็นroger.usersของ Synology จะปรากฏขึ้นroger.usersเมื่อดูจากกล่อง Ubuntu ดีจัง.

อย่างไรก็ตามเมื่อฉันtouchไฟล์:

roger@ubuntu$ touch /mounts/diskstation/music/foo

มันจบลงที่เจ้าของโดย1000.1000ใน Synology และแสดงเป็นเจ้าของโดยnobody.4294967294เมื่อดูจากกล่อง Ubuntu

ทุกสิ่งที่ฉันสามารถหาได้ในหัวข้อในฟอรัม Synology นั้นไม่ได้ลงวันที่ในปี 2011 เมื่อ NFSv4 ไม่ได้รับการสนับสนุนหรือประกอบด้วยคนที่ถามคำถามเดียวกันจากนั้นก็เลิก

เพื่อความสมบูรณ์/etc/exportsมี:

/volume1/music  10.0.0.0/24(rw,async,no_wdelay,root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)

... และฉันกำลังติดตั้งบนกล่อง Ubuntu ด้วย:

mount -t nfs diskstation:/volume1/music /mounts/diskstation/music/ -o rw,nfsvers=4

ฉันพบคำแนะนำบางอย่างว่าsec=sysอาจเป็นปัญหา: ทำไมการแมป NFSv4 uid / gid ไม่ทำงานกับ AUTH_UNIX (AUTH_SYS)แต่นั่นไม่ได้มีวิธีแก้ปัญหา

มีวิธีง่ายๆในการแก้ไขปัญหานี้หรือไม่? มีความซับซ้อนมากขึ้น ( ไอ Kerberos ไอ ) วิธีที่จะแก้ปัญหานี้?

อย่างจริงจังหากคำตอบของKerberos คือฉันจะรับเรื่องนั้น แต่ฉันอยากจะรู้ก่อนที่จะเสียเวลาไปกับมัน

อัปเดต : ในขณะที่เอกสารคู่มือSynologyพูดถึงตัวเลือก Kerberos ต่าง ๆ ฉันไม่พบพวกเขาใน UI บันทึกประจำรุ่นรัฐ "ถ้ารสชาติการรักษาความปลอดภัยของ Kerberos จะดำเนินการ ..." ฉันพบ (แต่ไม่พบอีกครั้ง) หน้าซึ่งบอกเป็นนัยว่ามันอาจไม่ได้อยู่ในรุ่นที่กำหนด ฉันมี DS211 ตามหน้าข้อมูลระบบ บางทีฉันอาจจะโชคไม่ดี?


กำหนดค่าเซิร์ฟเวอร์ ldap แยกกัน จากนั้นบนไคลเอนต์ NFS (กล่อง ubuntu ของคุณ) กำหนดค่าไคลเอ็นต์ ldap นอกจากนี้ยังกำหนดค่าบริการ autofs สำหรับการเมาท์ nfs ที่แชร์โดยอัตโนมัติ (จาก NAS) บนเครื่องไคลเอนต์ nfs (Ubuntu) บนไคลเอ็นต์ NFS ให้สร้างผู้ใช้ ssh เพื่อเข้าถึงเนื้อหาของผู้ใช้
Sathish

@DavidPostill ฉันเข้าใจว่าเหตุใดคุณจึงลบแท็ก [synology] ในคำถามนี้ ยกเว้น: คำถามนี้เป็นคำถามเฉพาะสำหรับซอฟต์แวร์ดิสเก็ตต์ดิสก์ - หรือมากกว่าฉันกำลังมองหาโซลูชันที่ใช้กับซอฟต์แวร์นั้นไม่ใช่ NAS โดยทั่วไป ไม่มีแท็ก diskstation และฉันยังไม่มีตัวแทนเพียงพอที่จะสร้างได้
Roger Lipscombe

โปรดทราบว่าแท็กนั้นจะถูกลบออกตามการอภิปรายของชุมชนว่าควรลบแท็กทั่วไปที่เกี่ยวข้องกับ บริษัท เท่านั้น โปรดทราบว่าการสร้างแท็กบนไซต์นี้ต้องการเพียง 300 ชื่อเสียงเท่านั้น รู้สึกฟรีเพื่อสร้างแท็กsynology-diskstation
gparyani

คำตอบ:


8

สำหรับการทำแผนที่ NFSv4 ID เพื่อการทำงานอย่างถูกต้องทั้งไคลเอ็นต์และเซิร์ฟเวอร์จะต้องเรียกใช้idmapdภูต ID Mapper และมีเดียวกันการกำหนดค่าในDomain/etc/idmapd.conf

วิธีนี้ไคลเอ็นต์ NFS ของคุณจะส่งข้อมูลประจำตัว ID เช่นเดียวกับroger@example.comในคำสั่ง NFS บน wire และ NFS Server idmapper ของคุณแม็พที่กับผู้ใช้ที่เรียกrogerบนเซิร์ฟเวอร์ NFS UID และ GID ไม่สำคัญพวกเขาจะถูกแมปในแต่ละระบบโดย idmapper

อย่างไรก็ตามฉันไม่ได้สนใจเรื่องนั้นใน Synology ของฉัน My Shared Folderมีการอนุญาตดังต่อไปนี้:

  • สิทธิ์
    • ผู้ใช้ท้องถิ่น
      • ผู้ดูแล = อ่าน / เขียน
  • สิทธิ์ NFS
    • สควอช
      • แม็พผู้ใช้ทั้งหมดกับผู้ดูแลระบบ

ส่งผลให้anonuid=1024,anongid=100( adminผู้ใช้และusersกลุ่ม) ถูกเพิ่มลงในการส่งออกใน/etc/exportsบน NAS

ไคลเอนต์ NFS ของฉัน (ซึ่งไม่มี ID Mapper ที่ทำงาน) ส่งคำสั่ง NFS ของฉันในฐานะผู้ใช้ของฉัน ( 1000:1000) และเนื่องจาก UID และ GID นั้นไม่มีอยู่ใน NAS มันแปล UID และ GID ของ1024:100ฉันให้เป็นเสมือน ผู้ใช้ผู้ดูแลระบบที่ได้รับอนุญาตอย่างสมบูรณ์

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

ตัวเลือกอื่นคือทำให้rogerUID และ GID เหมือนกันบน NFS ไคลเอ็นต์และ NAS จากนั้นคุณสามารถใช้ NFSv4 โดยไม่มีการจับคู่ ID หรือจากนั้นคุณสามารถใช้ NFSv3 ที่อาศัย UID และ GID เท่านั้น


1
นี่อาจเป็นสถานที่แห่งเดียวในจักรวาลที่จัดทำเอกสารโซลูชันที่สมเหตุสมผลสำหรับผู้ใช้ Linux ที่บ้านซึ่งไม่ต้องการการรักษาความปลอดภัยแบบเต็มรูปแบบที่ NFS จัดเตรียมไว้ในสภาพแวดล้อมเครือข่าย ใช้งานได้กับ Ubuntu 19.4 และ DSM 6.2.2
VanAlbert

1

ฉันดิ้นรนกับปัญหาเดียวกันนี้จริงๆ ฉันได้รับความเจ็บปวดอย่างมากในการตั้งค่าเซิร์ฟเวอร์ Kerberos ด้วย Docker on the Synology ตั้งค่าการจับคู่ ID และฉันก็ยังไม่ชอบพฤติกรรม Kerberos ทำงานหนักเกินไปและยากเกินกว่าที่จะทำการเริ่มต้นใหม่และดำเนินการต่อโดยอัตโนมัติ นอกจากนี้ค่าเริ่มต้น umask ของไฟล์ที่สร้างขึ้นใหม่คือ 0000 และทุกไฟล์ใหม่ถูกสร้างขึ้นในโหมด 777 ไม่ว่า umask ในพื้นที่ของฉันจะเป็นอะไร

โซลูชันของฉันคล้ายกับของ suprjami แต่ฉันเอามันเพิ่มเติมเล็กน้อย:

  • สร้างผู้ใช้ใหม่กับ UI ของเว็บ Synology, roger.remoteชื่อมันบางอย่างเช่น ทำเช่นเดียวกันสำหรับกลุ่มผู้ใช้และตั้งชื่อให้เหมือนกับชื่อผู้ใช้
  • ใน Synology ในฐานะ root ให้แก้ไข / etc / passwd และเปลี่ยนroger.remoteUID ของเป็น 1,000 และ GID เป็น 1,000
  • แก้ไข / etc / group และเปลี่ยนกลุ่มroger.remoteเป็น 1,000 เช่นกัน
  • ใน Synology web UI ตั้งค่าสควอชเป็น "ผู้ใช้ทั้งหมดเป็นผู้ดูแลระบบ" และบันทึก
  • ในฐานะที่เป็น root อีกครั้งแก้ไข / etc / exports และเปลี่ยน UID / GID เป็น anonuid=1000,anongid=1000
  • รีสตาร์ท NFS ด้วย /usr/syno/etc.defaults/rc.sysv/S83nfsd.sh restart
  • นี้ยังเป็น hacky บิต - chmod 777 /volume1แต่ ฉันมีปัญหาแปลก ๆ มากมายเมื่อติดตั้งไดเรกทอรีบ้านของฉัน KDE จะไม่เริ่มทำงานเนื่องจากaccess()ฟังก์ชั่นglibc จะส่งคืนการเข้าถึงที่ถูกปฏิเสธในไดเรกทอรี NFS ที่เมานต์ (แต่ไดเรกทอรีย่อยใด ๆ ก็ใช้งานได้) Firefox ก็มีปัญหาที่คล้ายกันซึ่งมันก็ปฏิเสธที่จะบันทึกไฟล์ไปยังไดเรกทอรีที่ติดตั้งเนื่องจากการตรวจสอบการเข้าถึง แม้ว่าการอนุญาตจะถูกต้องและฉันสามารถแตะ / สร้าง / เขียนไฟล์ในไดเรกทอรีที่เมาท์ การเปลี่ยนพาเรนต์ / ไดรฟ์ข้อมูลไดรฟ์ข้อมูล 1 ให้เป็นภาษาโลกนั้นสามารถแก้ไขได้ซึ่งเป็นปัญหาที่โง่และหลอกลูกค้าแอปให้เขียน
  • ลบ ACL ของระบบไฟล์ทั้งหมดออกจากการแบ่งใช้ จากการทดลองแบบสุ่มจำนวนมากฉันพบว่า ACL เหล่านี้ทำให้เกิดปัญหากับมาสก์โหมดของไฟล์ที่สร้างขึ้น ฉันไม่ใช่อาจารย์ ACL ดังนั้นอาจมีทางออกที่สง่างามกว่านี้ เป็นรากบน Synology synoacltool -del /volume1/myshareทำ คุณควรเห็น+สัญลักษณ์ถูกลบออกจากเอาต์พุต ls -l
  • เปลี่ยนความเป็นเจ้าของของการแบ่งปันเป็นผู้ใช้ใหม่ของคุณ: chown roger.remote:roger.remote /volume1/myshare
  • เปลี่ยนโหมดเป็น 755: chmod 755 /volume1/myshare
  • เมานต์ไดรฟ์บนไคลเอนต์ทดสอบสิทธิ์อนุญาตควรใช้งานได้! ตรวจสอบให้แน่ใจว่าได้แตะไฟล์ด้วยและตรวจสอบว่ามีการใช้ bash umask อย่างถูกต้อง
$ umask 
0002
$ cd / mnt / myshare
ทดสอบ $ สัมผัส
ทดสอบ $ ls -l
-rw-rw-r-- 1 roger roger 0 ต.ค. 21 18:15 การทดสอบ

ใน Synology คุณจะเห็น:

# ls -l / volume1 / myshare / test
-rw-rw-r-- 1 roger.remote roger.remote 0 ต.ค. 21 18:15 การทดสอบ

สนุก!

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