วิธีการแก้ไขข้อบกพร่องการออกแบบย้าย / คัดลอก NTFS อย่างไร


31

เมื่อใครก็ตามที่จัดการกับการอนุญาตเซิร์ฟเวอร์ไฟล์ทราบ NTFS มีคุณสมบัติการออกแบบที่น่าสนใจ / ข้อบกพร่องที่เรียกว่าปัญหาการย้าย / การคัดลอก

ตามที่อธิบายไว้ในบทความ MS KB นี้การอนุญาตสำหรับโฟลเดอร์หรือไฟล์จะไม่รับโดยอัตโนมัติจากพาเรนต์ถ้าโฟลเดอร์ถูกย้ายและแหล่งที่มาและปลายทางอยู่ในวอลุ่ม NTFS เดียวกัน สิทธิ์จะได้รับการสืบทอดหากโฟลเดอร์ถูกคัดลอกหรือหากต้นทางและปลายทางอยู่ในไดรฟ์ข้อมูลที่ต่างกัน

นี่คือตัวอย่างรวดเร็ว:

คุณมีสองโฟลเดอร์ที่ใช้ร่วมกันในวอลุ่ม NTFS เดียวกันที่เรียกว่า "ช่างเทคนิค" และ "ผู้จัดการ" กลุ่มช่างเทคนิคมีการเข้าถึง RW ไปยังโฟลเดอร์ช่างเทคนิคและกลุ่มผู้จัดการมีการเข้าถึง RW ไปยังโฟลเดอร์ "ผู้จัดการ" หากใครบางคนสามารถเข้าถึงทั้งสองและพวกเขาย้ายโฟลเดอร์ย่อยจากโฟลเดอร์ "ผู้จัดการ" ไปยังโฟลเดอร์ "ช่างเทคนิค" โฟลเดอร์ที่ถูกย้ายจะยังคงเข้าถึงได้เฉพาะผู้ใช้ในกลุ่ม "ผู้จัดการ" กลุ่ม "ช่างเทคนิค" ไม่สามารถเข้าถึงโฟลเดอร์ย่อยแม้ว่าจะอยู่ภายใต้โฟลเดอร์ "ช่างเทคนิค" และควรสืบทอดสิทธิ์จากด้านบน

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

คำถามคือ:

วิธีที่ดีที่สุดในการแก้ไขข้อบกพร่องการออกแบบ NTFS นี้คืออะไรและคุณจัดการกับมันอย่างไรในสภาพแวดล้อมของคุณ

ฉันรู้ว่าบทความ KB ที่เชื่อมโยงพูดถึงคีย์รีจิสตรีเพื่อเปลี่ยนพฤติกรรมเริ่มต้นของ Windows Explorer แต่เป็นฝั่งไคลเอ็นต์และต้องการให้ผู้ใช้มีความสามารถในการเปลี่ยนการอนุญาตที่ฉันคิดว่าในสภาพแวดล้อมส่วนใหญ่นั้นไม่ใช่สตาร์ทเตอร์หากคุณ ต้องการควบคุมสิทธิ์เซิร์ฟเวอร์ไฟล์ของคุณ (และสติเป็นระบบดูแลระบบ)


2
ฉันรู้ว่าตัวอย่างผู้จัดการ / ช่างเป็นเพียงเพื่อแสดงถึงข้อบกพร่อง แต่ในบางกรณีนั่นเป็นพฤติกรรมที่คุณต้องการ: ถ้ามีคนย้ายโฟลเดอร์จากผู้จัดการไปยังช่างเทคนิคโดยบังเอิญคุณอาจไม่ต้องการให้ช่างเทคนิคเข้าถึง มัน.
Ward - Reinstate Monica

2
นี่ไม่ใช่ข้อบกพร่องนี่เป็นวิธีการอนุญาตให้ใช้ไฟล์ มันได้รับการบันทึกไว้ตั้งแต่เปิดตัว NTFS ฉันไม่เชื่อว่าบางคนแนะนำไม่ใช้สิทธิ์ของไฟล์และใช้การแชร์เพื่อควบคุมการเข้าถึงเท่านั้น สิ่งนี้ขัดกับความปลอดภัยขั้นพื้นฐานสำหรับเซิร์ฟเวอร์ Microsoft File เหตุผลที่การย้ายโฟลเดอร์ / ไฟล์ในโวลุ่มเดียวกันไม่ได้รับมรดกก็คือไฟล์ / ไฟล์นั้นไม่ได้เคลื่อนไหวบนดิสก์จริงๆเพียงแค่ตัวชี้ที่เราเห็นการเปลี่ยนแปลง
Michael Brown

คำตอบ:


12

แนวทางของฉันคือไม่ใช้การอนุญาตระดับไฟล์ / ไดเรกทอรี ใช้สิทธิ์ในการแชร์ไฟล์และตั้งค่าไดรฟ์ระบบไฟล์ของเซิร์ฟเวอร์ทั้งหมดให้เป็นแบบควบคุมทุกคน (ซึ่งกลายเป็นที่สงสัย)

ในช่วงหลายปีที่ผ่านมา (10+) ฉันพบว่าการอนุญาต NTFS มีความซับซ้อนและทำให้เกิดข้อผิดพลาดมากขึ้น หากการตั้งค่าการอนุญาตไม่ถูกต้องหรือการรับมรดกเสียหายคุณจะเปิดเผยข้อมูลและยากต่อการค้นหาและดู นอกจากนี้คุณยังประสบปัญหาการย้าย / การทำสำเนาตามที่คุณพูด

สถานที่ที่คุณต้องใช้ไดเรกทอรี / ไฟล์ระดับ ACL ของ; ฉันรู้ว่าไม่มีวิธีการอื่นนอกเหนือจากการตรวจสอบสุขภาพเป็นประจำ


10

มันไม่ใช่ข้อบกพร่องจริงๆ กฎนี้สำหรับการจัดการการอนุญาตเมื่อมีการย้ายไฟล์ตั้งแต่อย่างน้อยเบต้า 2 ของ NT3.1 (แต่เห็นได้ชัดว่าไม่ใช่การสืบทอดเนื่องจากมีการเพิ่มลงใน Windows 2000 เท่านั้น) มันเกี่ยวกับคุณสมบัติของ Windows ที่สามารถเป็นที่รู้จักกันดี ฉันมีความเห็นอกเห็นใจมากมายสำหรับมุมมองของคุณเนื่องจากมีพวกเราบางคนที่ยังไม่ถูกเผาในขั้นตอนนี้ แต่มันเป็นสิ่งที่ผู้ดูแลระบบเรียนรู้ได้อย่างรวดเร็ว

จูเนียร์


6
ฉันมีข้อโต้แย้งกับเรย์มอนด์เฉินในบล็อกของเขาเกี่ยวกับเรื่องนี้ Microsoft "ขาย" NTFS ว่ามีการอนุญาต "การสืบทอด" จากนั้น backpedals เมื่อมีการเรียกใช้ chink ในชุดเกราะนี้ขึ้นมา NTFS มีการสืบทอดสิทธิ์ในเวลาที่สร้างไฟล์โดยการวาง ACE อย่างชัดเจนลงในไฟล์เมื่อสร้าง ฉันจะโต้แย้งว่าตราบใดที่เอกสารประกอบและเอกสารทางการตลาดพูดเกี่ยวกับระบบการรับมรดกของพวกเขาราวกับว่ามันเป็นเอกสารและรหัสแบบเรียลไทม์ พวกเขาควรเลือกและแก้ไข
Evan Anderson

1
มันเป็นการแลกเปลี่ยนที่ดี หากการสืบทอดเป็นแบบเรียลไทม์ทุกครั้งที่คุณเปิดไฟล์ที่ด้านล่างของทรีลึก OS จะต้องรันทรีเพื่อค้นหาว่าสิทธิ์ที่มีประสิทธิภาพคืออะไร แน่นอนการแลกเปลี่ยนคือถ้าคุณเปลี่ยนสิทธิ์ที่ด้านบนของต้นไม้ลึกคุณมีการรอ loooong! Active Directory ไม่ใช้รูปแบบเดียวกันหรือไม่
John Rennie

วัตถุโฆษณาสืบทอดสิทธิ์ของพาเรนต์ใหม่อย่างถูกต้องเมื่อย้ายไปมาระหว่างคอนเทนเนอร์และฉันจะโต้แย้งว่านี่เป็นพฤติกรรมที่ "ถูกต้อง" ที่คาดไว้เมื่อทำการย้ายไฟล์ / โฟลเดอร์ใน NTFS
David Archer

3
@renniej: โฆษณาใช้การสืบทอดตามเวลาจริงอย่างแท้จริง ระบบไฟล์ Netware ใช้งานได้นานแล้ว ระบบไฟล์ NTFS ก็สามารถทำได้เช่นกันหาก Microsoft นำไปใช้งาน มันเป็น "ถนนที่ไม่ถ่าย" สิ่งที่ทำให้ฉันรำคาญคือเอกสารของ Microsoft เรื่อง NTFS และ Explorer "เล่น" เช่นการสืบทอดเป็นแบบเรียลไทม์ (เช่นโกหก) บอกให้เราทราบว่ามันเป็นหรือแก้ไขพฤติกรรมที่จะ jibe กับเอกสาร!
Evan Anderson

@renniej อย่างที่ Evan Anderson พูดว่า Netware ทำสิ่งนี้ในปี 1990 เมื่อพวกเขาเป็นราชา ปัญหานี้แก้ไขได้ด้วยการสร้างดัชนีระบบไฟล์อื่นที่ติดตาม 'รายการการมองเห็น' ไมโครซอฟท์เลือกที่จะไม่ทำอย่างนั้น แต่อาจนึกได้ว่าจะปล่อย Windows Server ในอนาคต
sysadmin1138

6

เราใช้ NTFS มาตั้งแต่ NT 3.51 และถึงแม้ว่าเราเคยเห็น "ปัญหา" นี้ (เหมือนมีเกือบทุกคน) มันไม่ได้ทำให้เราเดือดร้อนอะไรมากมาย:

  • เราบอกให้คนอื่นคัดลอกไฟล์หากพวกเขาต้องการย้ายพวกเขาจากไดเรกทอรีที่ใช้ร่วมกันหนึ่งไปยังอีก "กดปุ่ม CTRL ค้างไว้เมื่อลากและตรวจสอบให้แน่ใจว่าเครื่องหมาย + ขนาดเล็กแสดง" เป็นวลีทั่วไป
  • โฟลเดอร์ที่ใช้ร่วมกันของเรามีโครงสร้างที่ค่อนข้างง่ายและโฟลเดอร์ที่ใช้ร่วมกันที่เราสร้างไม่ได้ข้ามระหว่างกลุ่มบ่อยเกินไปดังนั้นผู้คนมักจะต้องการคัดลอกไฟล์ตั้งแต่แรก
  • เราเห็นปัญหาส่วนใหญ่ในพื้นที่ "ทั่วไป" ของเรา - โฟลเดอร์ที่ทุกคนสามารถอ่าน / เขียนได้ แต่ไดเรกทอรีเหล่านั้นส่วนใหญ่มีอายุสั้นดังนั้นปัญหาจะหายไปเมื่อถูกกำจัด

4

วิธีแก้ปัญหาที่ฉันสามารถนึกได้:

  • ค้นหาวิธีการสร้างโฟลเดอร์ที่มีการอนุญาตแตกต่างกันอยู่ในวอลุ่ม NTFS ที่แตกต่างกัน
  • ทำภารกิจที่กำหนดเวลาไว้ (หนึ่งครั้งต่อชั่วโมงหรือหนึ่งครั้งต่อวันขึ้นอยู่กับความถี่ของการร้องขอการสนับสนุน) ที่ทำงานผ่านโฟลเดอร์และรีเซ็ตสิทธิ์ทั้งหมดให้เหมือนกับที่มาจากระดับบนสุด สิ่งนี้น้อยกว่าอุดมคติมากกว่าดังนั้นหากโฟลเดอร์มีไฟล์จำนวนมาก แต่เป็นสิ่งที่จะทำให้ปัญหาได้รับการแก้ไขหากไม่มีวิธีแก้ปัญหาที่ดีเช่นการแก้ไขรีจิสตรีฝั่งเซิร์ฟเวอร์ คำสั่งที่คุณต้องการดูเรียกว่า 'cacls' ซึ่งคุณสามารถเพิ่มลงในไฟล์แบตช์ได้

ข้อจำกัดความรับผิดชอบ - ฉันมาจากพื้นหลังยูนิกซ์ (และได้นำมาใช้ล่าสุดเพื่อแก้ไขข้อบกพร่องการอนุญาตที่แตกต่างกัน - มันรู้สึกไม่ดี แต่ทำงานได้) ดังนั้นอาจมีการแก้ไขที่ดีกว่ามาก


+1 - คำตอบแรกที่ Mark ให้เป็นตัวเลือกที่ดีที่สุด มันเป็นความเจ็บปวด แต่มันเป็นวิธีที่ดีที่สุดของคุณในการตัดสินใจเกี่ยวกับการออกแบบที่โง่ใน NTFS 5
Evan Anderson

ในการขยาย: นี่คือสถานที่ที่เพื่อนที่ใช้ SharePoint ของฉันจะพูดว่า "ใช้ SharePoint"! ในทำนองเดียวกันการควบคุมโดยใช้รุ่นของฉันและการควบคุมเอกสารโดยใช้ระบบเพื่อนจะชี้ไปที่การโค่นล้ม Documentum ฯลฯ และพูดว่า "ใช้สิ่งนั้น" ตัวเลือกการออกแบบใน NTFS นี้เป็นหูดตัวใหญ่และเกือบทำให้คุณสงสัยว่า Microsoft ใช้ซอฟต์แวร์ของตัวเองจริง ๆ หรือไม่เมื่อคุณต้องต่อสู้กับมันในเครือข่ายของคุณเอง (มันกรีดร้องกับผมว่าไมโครซอฟท์ไม่ได้ใช้ซอฟต์แวร์ของพวกเขาในลักษณะเดียวกับที่เราทำ w / ผู้ใช้ของเราจริงจะต้องมีความสุขที่ได้เป็น บริษัท ที่เต็มไป w / "แรงงานความรู้"..)
อีวานเดอร์สัน

1
ฉันยอมรับว่าในอุดมคติแล้วเราสามารถแยกโฟลเดอร์ที่แชร์ทั้งหมดออกเป็นโวลุ่มของตัวเองในทางปฏิบัติมันไม่สามารถใช้งานได้กับสภาพแวดล้อมขนาดใหญ่ (โฟลเดอร์แชร์หลายพันรายการ) นอกจากนี้หากไม่มีจุดเชื่อมต่อที่ขี้ขลาดหรือ symlink voodoo หมายความว่าการสูญเสียความสามารถในการซ้อนโฟลเดอร์ย่อยที่มีสิทธิ์แตกต่างกัน
David Archer

1
@David: การย้ายข้อมูลข้ามการแชร์จะทำให้เกิดการคัดลอกและลบ การย้ายข้อมูลภายในการแชร์จะส่งผลให้เกิดการย้าย หากคุณทำให้แต่ละโฟลเดอร์แชร์เป็นรากของลำดับชั้นการอนุญาตโดยไม่มีโฟลเดอร์ย่อยที่มีสิทธิ์ จำกัด มากขึ้นคุณจะบรรเทาปัญหาได้ ยังคงน่าเกลียดแม้ว่า (ฉันจะมีเซิร์ฟเวอร์ W2K3 / 2200 + โฟลเดอร์ที่ใช้ร่วมกันแต่ละที่มันกว้างและฉันไม่เห็นปัญหาประสิทธิภาพการทำงาน ... )
อีวานเดอร์สัน

3

เมื่อย้ายเป็นผู้ดูแลระบบฉันใช้ xcopy / s / e / c / h / r / k / y - ทุกอย่างนอกเหนือจากการเป็นเจ้าของไฟล์และ ACL ซึ่งหมายความว่าการสืบทอด ACL จะเริ่มต้นโดยอัตโนมัติไม่ต้องจัดการกับสถานการณ์ที่ผู้ใช้ แม้ว่าสิ่งที่ย้าย


2
ผู้ใช้ของคุณยังมีชีวิตอยู่หรือไม่?
Evan Anderson

4
บางครั้งผมก็แปลกใจ ...
สังฆ Minimus

@Even: อาจไม่มีพวกเขาในสองกลุ่ม!
SamB

+1 สำหรับการนำผู้ใช้ไปยังเครื่องมือที่แก้ไขปัญหานี้เมื่อดูแลรักษาไฟล์ (รวมถึงอื่น ๆ อีกมากมาย); อย่างไรก็ตาม XCOPY ได้ถูกคิดค่าเสื่อมราคาแล้ว: ROBOCOPY.EXE เป็นผู้สืบทอดที่มีความสามารถมาก
jnaab

2
ขออภัยสำหรับ nitpicking แต่ไม่ได้ xcopy _copy_ ไฟล์ (แทนที่จะเป็น _moving_ the files?) - ดูเหมือนว่าผู้แต่งไม่มีปัญหาในการคัดลอกเขามีปัญหากับ _moving_ เท่านั้น ฉันอาจจะผิดใน bc นี้ของฉันขาดประสบการณ์ดังนั้นโปรดแก้ไขให้ฉันถ้าฉันผิด (เช่นคุณใช้คำสั่ง 'del' หลังจากใช้ 'xcopy' ดังนั้นไฟล์จริง ๆ แล้ว 'คัดลอกและลบ'! = ย้ายแล้ว?)
colemik

3

ฉันใช้นโยบายกลุ่ม / นโยบายความปลอดภัย / ระบบไฟล์เพื่อติดตามการอนุญาตที่ซับซ้อน (ไม่เคยใช้ "แทนที่สิทธิ์" ในนโยบาย)

กำหนดเวลา CACLS เพื่อรีเซ็ตสิทธิ์ทั้งหมดในช่วงกลางคืนตามด้วย gpupdate / บังคับให้นำการอนุญาตจากนโยบายไปใช้อีกครั้ง ทำงานเหมือนจับใจ


สันนิษฐานว่าเป็นเพียงเซิร์ฟเวอร์ Windows เท่านั้น เนื่องจากต้องใช้นโยบายกลุ่มกับวัตถุโดเมนจึงไม่สามารถนำไปใช้กับที่เก็บข้อมูลที่ไม่ใช่ Windows ได้ฉันจะจินตนาการได้อย่างไร
Rich M

2

ตั้งแต่ Windows 7 (หรืออาจเป็น Windows Vista) การอนุญาตสำหรับโฟลเดอร์หรือไฟล์จะสืบทอดจากพาเรนต์ถ้าโฟลเดอร์ถูกย้ายและแหล่งที่มาและปลายทางอยู่ในวอลุ่ม NTFS เดียวกัน - หากไฟล์หรือโฟลเดอร์ถูกคัดลอกผ่าน Explorer ในระบบปฏิบัติการก่อนหน้านี้คุณสามารถใช้ตัวจัดการ Far - อนุญาตให้เปิดใช้งานการสืบทอดสิทธิ์จากปลายทาง (พร้อมด้วยคุณสมบัติอื่น ๆ มากมาย) แม้ว่า Far อาจดูไม่เป็นมิตรสำหรับผู้ใช้ทั่วไป


0

วิธีแก้ปัญหาที่ง่ายมากคือเพียงแค่ซิปไฟล์และคลายการบีบอัดไปยังไดเรกทอรีปลายทาง


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