ไทย

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

บิตดำเนินการทำอะไรในไดเร็กทอรี และเหตุใดโฟลเดอร์ 644 จึงแตก

· มันทำงานอย่างไร

chmod ยูนิกซ์ นักพัฒนาเวิร์กโฟลว์

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

ในไดเร็กทอรี x ไม่ได้เกี่ยวกับการรันอะไรเลย มันให้สิทธิ์ในการสำรวจ โพสต์นี้จะอธิบายการแยก read/search กรณีแปลก ๆ ที่เกิดขึ้น และโหมดที่หลีกเลี่ยง

การอนุญาตถูกปฏิเสธในไฟล์ที่คุณสามารถอ่านได้ — ไฟล์คือ 644 ไดเร็กทอรีคือ 644 และ cat ยังคงล้มเหลว

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

เปรียบเทียบ 644 กับ 755 ขณะที่เป้าหมายถูกตั้งค่าเป็นไดเร็กทอรี การแสดงผลครั้งแรก rw-r--r--; ส่วนที่สองจะเรนเดอร์ rwxr-xr-x ทุกคลาสจะได้รับการดำเนินการ ในขณะที่มีเพียงเจ้าของเท่านั้นที่ยังคงเขียนในทั้งสองโหมด ความแตกต่างนั้นอธิบายความแตกต่างของสิทธิ์ที่เป็นตัวแทน หน้านี้ไม่ได้ตรวจสอบไฟล์ ระบุกระบวนการเข้าถึง หรือทดสอบว่าไดเรกทอรีระดับบนสุดบล็อกเส้นทางจริงหรือไม่

อ่านรายการ ดำเนินการสำรวจเส้นทาง - วิธีที่ไดเร็กทอรี r แสดงชื่อ ในขณะที่ x ให้คุณเปิดรายการตามชื่อและระบุสถานะ

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

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

ชุดค่าผสมทั้งสี่ชุด ได้แก่ r ที่ไม่มี x, x ที่ไม่มี r, ทั้งสองอย่างและทั้งสองอย่าง และสิ่งที่แต่ละชุดอนุญาตให้ผู้ใช้ทำได้จริง

ชุดค่าผสมการอ่านและดำเนินการทั้งสี่ชุดสามารถแสดงได้โดยไม่ต้องกำหนดลักษณะการทำงานของระบบที่กว้างขึ้น หลัก 4 คือ r-- หลัก 1 คือ --x หลัก 5 คือ r-x และหลัก 0 คือ --- สำหรับเป้าหมายไดเร็กทอรี ร้อยแก้วที่สร้างขึ้นจะเชื่อมโยงบิตที่เลือกเหล่านั้นเข้ากับรายชื่อและความสามารถในการเข้าถึงตามชื่อ การเขียนยังคงเป็นแฟล็กอิสระและไม่ได้บอกเป็นนัยทั้งการอ่านหรือดำเนินการ

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

Traversal ใช้กับบรรพบุรุษทุกตัว — เหตุใดไดเร็กทอรีที่มีข้อจำกัดที่อยู่สูงกว่าในพาธจึงทำลายการเข้าถึงทุกสิ่งที่อยู่ข้างใต้

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

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

ตัวอย่างการทำงาน: การแก้ไขเว็บรูท — ตรวจสอบแต่ละไดเร็กทอรีจาก / ไปยังไฟล์ที่ให้บริการ และเลือก 755 หรือ 750

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

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

การเรียกซ้ำทำถูกต้อง — ทำไม chmod -R 644 บนแผนผังจึงเป็นข้อผิดพลาดแบบคลาสสิก และวิธีที่ Capital X หรือ find -type d หลีกเลี่ยงมัน

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

การมอบหมายสัญลักษณ์ที่สร้างขึ้นยังคงได้รับการแก้ไข สำหรับ 644 สิ่งเหล่านี้คือ u=rw,g=r,o=r ไม่ใช่คำสั่งที่เกี่ยวข้องที่จะรักษาการแวะผ่านแบบมีเงื่อนไข ฟิลด์ ls-style จะแสดง rw-r--r-- และไม่ควรสับสนกับรายการมอบหมายนั้น กลยุทธ์การเรียกซ้ำภายนอกใดๆ จะต้องได้รับการตรวจสอบภายนอกเส้นทางนี้ รวมถึงการเลือกเป้าหมาย การจัดการลิงก์ และโหมดสุดท้ายที่วางบนออบเจ็กต์ประเภทต่างๆ

สิ่งนี้ไม่ครอบคลุม — พฤติกรรมที่เหนียวเหนอะหนะและ setgid ในไดเร็กทอรี และมาสก์ ACL ซึ่งครอบคลุมอยู่ในโพสต์ของพวกเขาเอง

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

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

Takeaway: ไดเร็กทอรีจำเป็นต้องมี x จึงจะสามารถใช้งานได้ และเครื่องคำนวณทำให้ความแตกต่างระหว่าง 644 และ 755 มองเห็นได้เป็น r-- กับ r-x

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

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