ไทย

เครื่องมือสำหรับนักพัฒนา · เครื่องคิดเลข Chmod

POSIX ACLs เทียบกับบิตโหมด chmod: เมื่อ rwx ไม่เพียงพอ

· พื้นหลัง

chmod ยูนิกซ์ การควบคุมการเข้าถึง

ACL ขอบเขตที่แสดงเป็นไดอะแกรมบิตสิทธิ์ Unix ที่แตกต่างกัน
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

บิตของโหมดครอบคลุมเจ้าของหนึ่งราย กลุ่มหนึ่ง และคนอื่นๆ ทั้งหมด โพสต์นี้จะอธิบายโมเดล POSIX.1e ACL ที่เติมเต็มช่องว่าง วิธีโต้ตอบกับ chmod และเมื่อใดที่กลุ่มที่แชร์ยังคงเป็นคำตอบที่ง่ายกว่า

มีผู้อ่านมากกว่าที่โมเดลอนุญาต 1 คน ไฟล์อยู่ในกลุ่มแอป และผู้ตรวจสอบภายนอกกลุ่มหนึ่งคนจำเป็นต้องอ่านไฟล์นั้น

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

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

ขีดจำกัดของสามคลาส — เพราะเหตุใดรุ่นดั้งเดิมจึงมีหนึ่งช่องสำหรับเจ้าของ กลุ่ม และคนอื่นๆ อย่างละหนึ่งช่อง

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

ข้อจำกัดนี้มีความสำคัญเมื่ออ่านเอาต์พุตที่มีข้อจำกัดอย่างเห็นได้ชัด ค่าสัญลักษณ์ rw-r----- บอกคุณถึงเจ้าของฐาน กลุ่ม และบิตอื่นๆ ที่แสดงโดย 0640 ไม่ได้พิสูจน์ว่าไม่มีข้อมูลประจำตัวอื่นใดที่สามารถอ่านออบเจ็กต์ได้ เนื่องจากเครื่องคิดเลขไม่ได้ตรวจสอบข้อมูล ACL หรือสังเกตเลเยอร์การบังคับใช้ภายนอกใดๆ

POSIX.1e ACLs — ผู้ใช้ที่มีชื่อและรายการกลุ่มที่มีชื่อถูกเพิ่มลงในไฟล์เดียวกัน ตั้งค่าด้วย setfacl และอ่านด้วย getfacl

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

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

รายการที่มีชื่อ ACL จำเป็นต้องใช้เครื่องมือภายนอกที่ไม่ได้ใช้งานที่นี่

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

หลีกเลี่ยงการอธิบายผลที่ตามมา ACL จากเอาต์พุตของโหมดเพียงอย่างเดียว การเปลี่ยนแปลงจาก 0640 เป็น 0600 จะลบบิตคลาสกลุ่มสามบิตในโมเดลนี้ออกไปได้อย่างชัดเจน สิ่งใดก็ตามเกี่ยวกับผู้ใช้ที่ระบุชื่อ กลุ่มที่มีชื่อ หรือมาสก์ จำเป็นต้องมี ACL และกฎของแพลตฟอร์มจริง ตรวจสอบผู้ที่มีเอกสารระบบไฟล์ก่อนที่จะใช้คำสั่งที่แสดงกับวัตถุ ACL-bearing

ACL การโต้ตอบแบบมาสก์กับ chmod ต้องการเอกสารระบบไฟล์

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

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

การสืบทอด ACL เริ่มต้นและการโต้ตอบ umask อยู่นอกเส้นทางนี้

พิจารณาโหมดฐานที่ให้มาด้วย 0640 สำหรับไฟล์ที่อาจต้องมีตัวอ่านเพิ่มเติม เครื่องคิดเลขแสดงผล rw-r-----: เจ้าของอ่านและเขียน, อ่านเป็นกลุ่ม, อื่นๆ ไม่มี นั่นคือคำสั่งที่สมบูรณ์ที่ได้รับการสนับสนุนจากอินพุต มันไม่ได้ระบุผู้ตรวจสอบบัญชีหรือเสนอประเภทที่สี่ในการวางข้อมูลประจำตัวนั้น

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

ตัวอย่างการทำงาน: ทำให้โหมดฐานสามารถอ่านได้ในขณะที่งาน ACL เกิดขึ้นที่อื่น

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

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

ACL รุ่นอื่นๆ และการสนับสนุนการติดตั้งไม่ได้ถูกอนุมาน

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

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