ทำไมสิทธิ์ไฟล์จึงถูกเก็บไว้เมื่อย้ายไฟล์ภายในโวลุ่มเดียวกัน


9

ในบางครั้งเรามีปัญหาที่ไฟล์มีสิทธิ์แตกต่างจากโฟลเดอร์ที่มีอยู่

ตอนนี้ฉันพบว่ามีบทความ KBอธิบายเหตุผลที่อยู่เบื้องหลัง:

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

ดังนั้นผู้ใช้จึงย้ายไฟล์จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่งและการอนุญาตจากโฟลเดอร์เดิมจะยังคงอยู่

คำถามของฉันตอนนี้คือ: เหตุใดจึงไม่มีข้อยกเว้นนี้ อะไรคือเหตุผลเบื้องหลังสิ่งนี้

คำตอบ:


8

ฉันได้อธิบายเรื่องนี้ในบล็อกโพสต์http://think-like-a-computer.com/2011/07/24/moving-files-on-the-same-ntfs-volume-does-inherit-permissions/แต่มัน ยังอธิบายไว้ด้านล่าง

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

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

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

นี่คือเหตุผลสำหรับพฤติกรรมนี้

แก้ไข: สิ่งที่ฉันลืมพูดถึง ... บทความ MS ไม่ถูกต้องทั้งหมด อ้าง MS:

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

คำพูดข้างต้นใช้กับวัตถุที่ได้รับการอนุญาตที่กำหนดไว้อย่างชัดแจ้งเท่านั้น (ปิดการสืบทอด) ดังที่ได้กล่าวไว้ในความคิดเห็นของฉันมันคือทั้งหมดที่เกี่ยวกับการรักษารายการ ACL ให้มีประสิทธิภาพมากที่สุด ลองพิจารณาตัวอย่างต่อไปนี้:

เพื่อให้คำอธิบายง่าย ๆ สมมติว่าคุณมีชุดโฟลเดอร์ที่อนุญาตให้ผู้ใช้แก้ไขสิทธิ์เท่านั้น ด้านล่างนี้มีไฟล์นับพันไฟล์และไม่มีไฟล์ใดที่มีการอนุญาตที่ชัดเจน การสร้าง ACLs สำหรับแต่ละไฟล์นั้นไม่ได้มีประสิทธิภาพมากนักเพราะมันเป็นแบบเดียวกันกับที่กำหนดดังนั้นจึงตั้งค่าหนึ่งรายการ ACL สำหรับโฟลเดอร์ บิตถัดไปนี้สำคัญมากที่จะเข้าใจ ไฟล์เองไม่มี ACL PERMS ดังนั้นเมื่อคุณย้ายไฟล์ใด ๆ เหล่านี้ไปยังโฟลเดอร์ใหม่ในปริมาณเดียวกัน MS อ้างว่า perms ย้ายไปกับมัน (ตามที่ระบุไว้ข้างต้น) ถามตัวเองว่านี้ .... ได้อย่างไร ไม่มีการเปิดไฟล์ในครั้งแรกที่จะย้ายข้าม สิ่งนี้ไม่ถูกต้องและฉันเพิ่งทดสอบตอนนี้เพื่อยืนยัน สมมติว่าโฟลเดอร์ปลายทางที่คุณกำลังย้ายไฟล์มี perms เพื่อให้สิทธิ์การแก้ไขกลุ่มทุกคนเท่านั้น เนื่องจากไฟล์ไม่มี ACL โดยตรงจึงสืบทอด ACL ของโฟลเดอร์พาเรนต์ ซึ่งหมายความว่า perms มีการเปลี่ยนแปลงจากผู้ใช้แก้ไข (โฟลเดอร์เก่า) เพื่อทุกคนแก้ไข (โฟลเดอร์ใหม่)

สังเกตเห็นความแตกต่าง ?? ในครั้งนี้การย้ายไฟล์ไปยังโฟลเดอร์อื่นในโวลุ่มเดียวกันนั้นได้เปลี่ยน perms แล้วสิ่งที่ MS บอกว่ามันไม่ได้ทำ ฉันเพิ่งพบข้อผิดพลาดในเอกสาร MS ตั้งแต่ 2000 lol?

ตอนนี้ดูสถานการณ์เดียวกันเมื่อใช้สิทธิ์ที่ชัดเจน หากคุณตั้งค่าการอนุญาตที่ชัดเจนในไฟล์ภายในโฟลเดอร์นี้ (ปิดการสืบทอด) ซึ่งตัวอย่างเช่นปฏิเสธการเข้าถึงของผู้ใช้ตอนนี้จะสร้างรายการ A ACL ใหม่สำหรับไฟล์นี้โดยเฉพาะ ตอนนี้เมื่อคุณย้ายไฟล์ไปยังตำแหน่งใหม่มันมีรายการ ACL ที่เกี่ยวข้องโดยตรง ในกรณีนี้การย้ายไฟล์ไปยังตำแหน่งใหม่ในไดรฟ์ข้อมูลเดียวกัน RETAINS การอนุญาต (ตามที่ MS อ้าง)!


+1 ทั้งคู่เป็นคำตอบที่ดี แต่คุณก็เป็นจุดสำคัญ ฉันชอบความคิดเห็นของคุณเกี่ยวกับวิธีการย้ายไฟล์ 5GB ทันที ภาพที่ดี
KCotreau

ฉันมักจะคิดว่า "ไม่มีการคัดลอกเกิดขึ้น" เป็นเหตุผลหลักที่ทำให้ ACL ไม่ได้สัมผัส
VVS

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

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

1
@Mucker: ขออภัย แต่คำอธิบายของคุณนั้นผิดธรรมดา Windows เก็บ ACL ไว้เสมอกับไฟล์แม้ว่าจะได้รับมรดกมา และจากมุมมองของระบบไฟล์พวกเขาจะย้ายไปพร้อมกับไฟล์เสมอหากไฟล์นั้นถูกย้ายภายในโวลุ่มเดียวกัน ขึ้นอยู่กับการตั้งค่าระบบบางอย่าง Windows Explorer จะข้ามไปและปรับการอนุญาตหลังจากการย้าย แต่นั่นคือ Explorer และไม่มีอะไรเกี่ยวข้องกับระบบไฟล์ และแย่กว่านั้น: มันขึ้นอยู่กับรุ่นของ Windows และ (ตามที่ฉันได้กล่าวไปแล้ว) การตั้งค่าระบบบางอย่าง ดูblogs.msdn.com/b/oldnewthing/archive/2006/08/24/717181.aspx
Paul Groke

6

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

พฤติกรรมนี้เป็นเรื่องปกติในระบบปฏิบัติการส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) ที่ใช้ประโยชน์จาก ACL มันรับประกันการทำงานของระบบไฟล์ปกติภายในโวลุ่มโดยผู้ใช้และแอพพลิเคชั่นเหมือนกัน

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

โดยธรรมชาติแล้วสิ่งนี้ไม่เป็นที่ต้องการเสมอไป สำหรับเหตุผลการย้ายและการคัดลอกที่สามารถกำหนดได้ด้วยกฎการสืบทอดสิทธิ์พิเศษ จากบทความเดียวกัน:

  • หากต้องการสงวนสิทธิ์เมื่อคัดลอกหรือย้ายไฟล์และโฟลเดอร์ให้ใช้ยูทิลิตี Xcopy.exe พร้อมสวิตช์ / O หรือสวิตช์ / X สิทธิ์ดั้งเดิมของวัตถุจะถูกเพิ่มเข้าไปในสิทธิ์ที่สืบทอดได้ในตำแหน่งใหม่

  • เมื่อต้องการเพิ่มการอนุญาตดั้งเดิมของวัตถุให้สิทธิ์ที่สืบทอดได้เมื่อคุณคัดลอกหรือย้ายวัตถุใช้ยูทิลิตี Xcopy.exe พร้อมสวิตช์ –O และ –X


"นี่เป็นสิ่งที่ไม่พึงประสงค์หากคุณเพิ่งย้ายไฟล์ไปยังระบบโดยไม่ตั้งใจหรือโฟลเดอร์ที่มีสิทธิ์การเป็นเจ้าของพิเศษหรือได้รับการปกป้อง" - ดังนั้นคุณย้ายไฟล์เช่นไปยังโฟลเดอร์ที่มีสิทธิ์แบบเป็นลายลักษณ์อักษรและยังสามารถย้ายไฟล์กลับได้ .. เหตุใดจึงไม่เป็นที่ต้องการเกี่ยวกับไดรฟ์ข้อมูลที่แตกต่างกัน
VVS

1
@VVS เนื่องจาก ACL เป็นโมเดลความปลอดภัยของระบบไฟล์ แต่ละวอลุ่มมีระบบไฟล์ของตัวเองและดังนั้นตาราง ACL ของตัวเอง จากมุมมองของความปลอดภัย ACL วอลุ่มที่แตกต่างกันจะเทียบเท่ากับ "ผู้ใช้" คนอื่น ด้วยการย้ายไฟล์ไปยังไดรฟ์ข้อมูลอื่นคุณกำลังถ่ายโอนการควบคุมไปยัง "ผู้ใช้" นั้น แต่คุณยังคงได้รับตัวเลือกไม่ว่าคุณต้องการอย่างแน่นอน เป็นเพียงพฤติกรรมการเริ่มต้นที่อยู่ที่เกี่ยวข้องกับความปลอดภัย ACL
คนแคระ

1

ตกลงนี่คือการลดลงจริง อันดับแรก - เรากำลังพูดถึงพีซีเครื่องเดียวหรือเซิร์ฟเวอร์หรือไม่? ฉันคิดว่าเรากำลังพูดถึงเซิร์ฟเวอร์ ดังนั้น .... ในฐานะผู้ดูแลระบบ Wintel ของ บริษัท A คุณสร้างระบบไฟล์บนไดรฟ์เครือข่ายบนเซิร์ฟเวอร์ใหม่ของคุณ คุณยึดตามแผนกต่างๆเช่นแต่ละแผนกมีโฟลเดอร์และแต่ละโฟลเดอร์มี ACL ที่เป็นเอกลักษณ์ของตนเองเนื่องจากปัญหาการรักษาความลับซึ่งอาจเป็นเรื่องปกติ - ใช่หรือไม่? ดังนั้นหากคุณกำลังจะย้ายไฟล์ไปยังโฟลเดอร์ของแผนกอื่นทำไมคุณไม่ต้องการให้มันสืบทอดช่วงของโฟลเดอร์ใหม่ สิ่งที่ฉันหมายถึงคือ…ทำไมมีระบบไฟล์ที่มีสิทธิ์หากคุณไม่ได้ใช้งาน ฉันสามารถให้คุณเป็นตัวอย่างในชีวิตจริงซึ่งเป็นเรื่องสำคัญที่ไฟล์ / โฟลเดอร์ที่ถูกย้ายจะต้องสืบทอด ACL ของโฟลเดอร์แม่ของพวกเขาเสมอเพียงแค่ถามฉัน

การย้ายไฟล์ภายในโวลุ่มหรือย้ายไฟล์จาก vol X ไปยัง vol Y ... อะไรคือความแตกต่างที่สำคัญ? คุณกำลังย้ายตำแหน่งของไฟล์บางไฟล์ - ในไดรฟ์ข้อมูลที่แตกต่างกันหรือไม่สร้างความแตกต่าง litle ในสภาพแวดล้อมขององค์กรเท่าที่ฉันเห็น เหตุผลที่แท้จริงว่าทำไมถึงมีการสืบทอดโดยปริยายและอีกอันไม่ได้ถูกกล่าวถึงโดย Mucker - นั่นคือ "ประสิทธิภาพ" การลากและวางไฟล์ภายในโวลุ่มเพียงเปลี่ยนรายการดัชนี - ไฟล์จะไม่ถูกย้ายและข้อมูล ACL จะถูกทิ้งไว้ตามลำพัง ทำให้ใช้งานง่าย เมื่อไฟล์ถูกย้ายข้ามวอลุ่มอย่างไรก็ตามไฟล์และ ACL ของไฟล์เหล่านั้นจะต้องถูกกำหนดใหม่ดังนั้นการทำอย่างถูกต้องและรวมถึงการสืบทอดนั้นเหมาะสมดีเนื่องจากไม่มีค่าใช้จ่ายที่หลีกเลี่ยงได้

ฉันไม่เข้าใจว่าเพราะเหตุใด Microsoft จึงไม่แก้ปัญหานี้ มันจะยากเกินไปที่จะรวมกล่องโต้ตอบเป็นส่วนหนึ่งของการลากและวางของ Explorer หรือไม่ บางอย่างเช่น "คุณย้ายไฟล์ไปยังตำแหน่งที่มีสิทธิ์การเข้าถึงที่แตกต่างกันคุณต้องการสืบทอดสิทธิ์ของโฟลเดอร์พาเรนต์ใหม่ใช่หรือไม่ Y หรือ N"

ขอแสดงความนับถือ Stonegiant

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