ทำไมฉันถึงไม่สามารถเขียนทับไฟล์บน QNAP NAS ได้เมื่อเข้าถึงผ่าน Client for NFS บน Windows Server?
ผลิตภัณฑ์ที่รองรับ
- All QNAP NAS series
- Windows Server (any supported version)
กรณีใช้งาน
ผู้ใช้เข้าถึงโฟลเดอร์ที่แชร์บน QNAP NAS ผ่าน Network File Services (NFS) จาก Windows Server ที่ใช้เวอร์ชันที่รองรับ เมื่อคัดลอกไฟล์ที่มีชื่อเดียวกัน Windows จะแสดง แทนที่หรือข้ามไฟล์ พร้อมท์ ซึ่งบ่งบอกว่ามีไฟล์ที่มีอยู่แล้วบน NAS
อย่างไรก็ตาม หลังจากเลือก แทนที่ไฟล์ในปลายทาง การดำเนินการล้มเหลวด้วยข้อผิดพลาดการเข้าถึงถูกปฏิเสธหรือข้อผิดพลาดสิทธิ์ ทำให้ไม่สามารถเขียนทับหรืออัปเดตไฟล์ได้
สาเหตุของปัญหา
พฤติกรรมนี้เป็นข้อจำกัดที่ทราบของฟีเจอร์ Client for NFS ใน Windows Server และไม่ขึ้นอยู่กับการตั้งค่า NAS พฤติกรรมเดียวกันนี้พบในทุกเวอร์ชันของ Windows Server ที่รองรับซึ่งมี Client for NFS
- Client for NFS รองรับเฉพาะ NFSv2 และ NFSv3 และไม่รองรับ NFSv4 ACLs ดังนั้นจึงไม่สามารถเจรจาหรือแก้ไข POSIX ACLs ผ่าน NFS ได้
- โดยค่าเริ่มต้น Client for NFS เข้าถึงการแชร์ NFS โดยใช้ UID และ GID ที่ไม่ระบุตัวตน หาก NAS ไม่อนุญาตสิทธิ์การเขียนให้กับตัวตนที่ไม่ระบุตัวตนนี้ การดำเนินการเขียนจะล้มเหลว
- การเข้าถูกปฏิเสธเว้นแต่ UID และ GID ที่ไม่ระบุตัวตนจะถูกแมปอย่างชัดเจนกับ UID และ GID ที่ NAS รับรู้และอนุญาตให้เขียนไปยังโฟลเดอร์ที่แชร์ ไม่ว่าจะมีการกำหนดสิทธิ์การเขียนของโฟลเดอร์ที่แชร์อย่างไร
วิธีแก้ปัญหา
เพื่อแก้ไขปัญหานี้ ให้แมปผู้ใช้ NFS ที่ไม่ระบุตัวตนบน Windows Server กับ UID และ GID ที่ NAS อนุญาตให้เขียนไปยังโฟลเดอร์ที่แชร์
คุณสามารถใช้การกำหนดค่าด้วยวิธีใดวิธีหนึ่งต่อไปนี้
วิธีที่ 1: กำหนดค่าด้วย PowerShell (แนะนำ)
- เปิด PowerShell ในฐานะ ผู้ดูแลระบบ
- เปิดใช้งาน PowerShell ด้วยสิทธิ์ของผู้ดูแลระบบ
- เรียกใช้คำสั่งต่อไปนี้เพื่อแมป UID และ GID ที่ไม่ระบุตัวตนกับ
0ซึ่งสอดคล้องกับผู้ใช้ root ของ QNAPSet-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" -Name AnonymousUid -Value 0 -PropertyType DWord Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" -Name AnonymousGid -Value 0 -PropertyType DWord - เรียกใช้คำสั่งต่อไปนี้เพื่อรีสตาร์ท Client for NFS หรือรีบูตระบบเพื่อใช้การเปลี่ยนแปลง:
nfsadmin client restartเคล็ดลับหรือคุณสามารถรีสตาร์ท Windows Server
วิธีที่ 2: กำหนดค่าด้วย Windows Registry
- กด Win + R.
- พิมพ์
regedit. - กด Enter.
- ไปยังเส้นทางรีจิสทรีต่อไปนี้:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default - ไปที่ แก้ไข > N ใหม่, แล้วคลิก DWORD (32-bit) Value.
- สร้างค่า DWORD (32-bit) สองค่าต่อไปนี้ในโฟลเดอร์เริ่มต้น:
- AnonymousUid = 0
- AnonymousGid = 0
- ใช้การเปลี่ยนแปลงโดยการรีสตาร์ทไคลเอนต์ NFS:
nfsadmin client restart - เคล็ดลับหรือคุณสามารถรีสตาร์ท Windows Server ได้
- การแมป UID และ GID ไปยัง
0ทำให้ Client for NFS เข้าถึง NAS ในฐานะผู้ใช้ root ตรวจสอบให้แน่ใจว่าโฟลเดอร์ที่แชร์ของ NAS ให้สิทธิ์การเขียนแก่ตัวตนนี้ - ใช้การตั้งค่าเหล่านี้ใน Windows Server แต่ละเครื่องที่เข้าถึงการแชร์ NFS
- สิ่งนี้ใช้กับ Windows ทุกรุ่นที่รองรับฟีเจอร์ Client for NFS
- สำหรับสภาพแวดล้อมที่ต้องการการควบคุมสิทธิ์อย่างละเอียดหรือการสนับสนุน NFSv4 ACL, Windows Server ที่ทำหน้าที่เป็นไคลเอนต์ NFS ไม่ได้รับการสนับสนุน
อ่านเพิ่มเติม
หากต้องการความช่วยเหลือเพิ่มเติม สอบถามผู้ใช้รายอื่นและผู้เชี่ยวชาญของ QNAP ได้ในคอมมูนิตี้ ไปที่ QNAP Community