เครื่องมือสำหรับนักพัฒนา · เครื่องคิดเลข Chmod
วิธีอ่านสิทธิ์ ls -l และแปลงเป็นโหมดฐานแปด
· มันทำงานอย่างไร
chmod ยูนิกซ์ นักพัฒนาเวิร์กโฟลว์
สตริงอักขระสิบตัวที่จุดเริ่มต้นของ ls -l เป็นประเภทไฟล์บวกเก้าบิตสิทธิ์ โพสต์นี้แสดงวิธีการถอดรหัสและสร้างโหมดฐานแปดที่ chmod ต้องการ รวมถึงตัวอักษรบิตพิเศษด้วย
ตั๋วที่มี -rw-r-----+ วางอยู่ — คุณจำเป็นต้องรู้ว่าจะต้องบอกให้ผู้ใช้รัน chmod 640 หรืออย่างอื่นหรือไม่
สตริงที่วาง เช่น -rw-r-----+ มีมากกว่าที่ parser นี้ยอมรับ แกนหลักที่รู้จักคือเนื้อหาสิทธิ์เก้าอักขระ โดยอาจนำหน้าด้วยอักขระประเภทไฟล์ที่รองรับหนึ่งตัว เครื่องหมายบวกต่อท้ายทำให้อินพุตยาวเกินไปและถูกปฏิเสธ การนำเครื่องหมายภายนอกออกจะเหลือ -rw-r----- ซึ่งแปลงเป็น 640: เจ้าของอ่าน/write, อ่านกลุ่ม และไม่มีสิทธิ์สำหรับผู้อื่น
การแปลงนั้นไม่ได้ถอดรหัสสิ่งที่เครื่องหมายบวกเป็นตัวแทน นอกเหนือจากคำเตือนของบทความ 501 ว่ารายการแบบยาวอาจใช้สำหรับ ACL เครื่องคิดเลขไม่มีรายการ ACL หรือมาสก์ นอกจากนี้ยังไม่ตรวจสอบเครื่องจำหน่ายตั๋ว เจ้าของ กลุ่ม หรือเส้นทางอีกด้วย โหมด 640 จึงเป็นค่าสิทธิ์พื้นฐานที่แสดงโดยคอร์ที่ยอมรับ ไม่ใช่คำตอบที่สมบูรณ์เกี่ยวกับการเข้าถึงที่มีประสิทธิภาพ
อักขระตัวแรกคือประเภท — dash, d, l, c, b, p และ s และเหตุใดจึงไม่เป็นส่วนหนึ่งของโหมด
อักขระตัวแรกที่เป็นทางเลือกจะถือเป็นเครื่องหมายประเภทแทนที่จะเป็นบิตสิทธิ์ parser รู้จัก -, d, l, b, c, p, s, D และ ? เมื่อปรากฏก่อนตำแหน่งสิทธิ์ที่ถูกต้องเก้าตำแหน่ง ตำแหน่งนั้นจะถูกลบออกจากการคำนวณ ผลลัพธ์ของเจ้าของ กลุ่ม และทริปเปิลอื่นๆ เพียงอย่างเดียวจะกำหนดค่าฐานแปดและการเลือกเมทริกซ์
ลักษณะการทำงานนี้ง่ายต่อการตรวจสอบด้วยอินพุตที่เทียบเท่า ทั้ง rwxr-x--- และ -rwxr-x--- สร้าง 750 เนื่องจากเส้นประนำหน้าไม่สนับสนุนบิตของโหมด เครื่องหมายไดเร็กทอรีสามารถนำหน้าเนื้อหาเดียวกันและยังคงให้ผลลัพธ์เป็นจำนวนเต็มเดียวกัน ตัวเลือกเป้าหมายจะควบคุมการใช้ถ้อยคำอธิบายแยกกัน ดังนั้นการยอมรับอักขระประเภทไม่ได้หมายความว่าเบราว์เซอร์ค้นพบหรือเปิดวัตถุนั้น
อักขระเก้าตัวในสามกลุ่ม ได้แก่ เจ้าของ กลุ่ม อื่นๆ ตามลำดับ rwx เสมอ โดยมีเครื่องหมายขีดสำหรับแต่ละบิตที่ปิดอยู่
ตำแหน่งการอนุญาตเก้าตำแหน่งประกอบด้วยสามตำแหน่งคงที่ในเจ้าของ กลุ่ม และลำดับอื่นๆ ภายในแต่ละทริปเปิ้ล การอ่านจะครองตำแหน่งแรก เขียนครั้งที่สอง และดำเนินการครั้งที่สาม เส้นประหมายถึงบิตที่เกี่ยวข้องปิดอยู่ การตรวจสอบความถูกต้องเฉพาะตำแหน่งจะปฏิเสธตัวอักษรที่วางผิดตำแหน่งแทนที่จะคาดเดา ดังนั้น r ในตำแหน่งการเขียนจึงไม่สามารถกลายเป็นการอนุญาตอื่นอย่างเงียบๆ ได้
แต่ละรายการที่ยอมรับจะแมปสามหลักเป็นเลขฐานแปดหนึ่งหลักด้วยน้ำหนักในบทความ 501: อ่านคือ 4 เขียนคือ 2 และดำเนินการคือ 1 เมทริกซ์แสดงแฟล็กเดียวกันกับช่องทำเครื่องหมายและสร้างจำนวนเต็มใหม่เมื่อมีการเปลี่ยนแปลง ตัวอักษรพิเศษได้รับการยอมรับเฉพาะในตำแหน่งดำเนินการ โดยคงไว้ setuid, setgid หรือติดหนึบร่วมกับสถานะดำเนินการที่ซ่อนอยู่
ตัวอย่างการทำงาน: -rwxr-x--- ถึง 750 — กำหนด 4, 2, 1 ให้กับแต่ละตัวอักษรและผลรวมต่อกลุ่ม
แปลง -rwxr-x--- โดยไม่สนใจเครื่องหมายประเภทที่นำหน้าและแยกเนื้อหาออกเป็น rwx, r-x และ --- เจ้าของมี 4+2+1 กำลังผลิต 7 กลุ่มมี 4+1 กำลังผลิต 5 อื่นๆ ไม่มีบิตที่เปิดใช้งาน กำลังสร้าง 0 เครื่องคิดเลขส่งคืน 750 และเลือกกล่องสิทธิ์ปกติเก้าช่องที่ตรงกัน
การตรวจสอบย้อนกลับควรอยู่บนเนื้อหาข้อความเดียวกัน ป้อน 750 และฟิลด์สัญลักษณ์จะกลายเป็น rwxr-x---; เลือกตัวทำเครื่องหมายไฟล์ปกติสำหรับแบบฟอร์มที่แสดง และจะกลายเป็น -rwxr-x--- การแสดงตัวอย่างงานที่มอบหมายมีรูปแบบที่แตกต่างกัน: u=rwx,g=rx,o= มุมมองทั้งสามอธิบายโหมดคงที่เดียว ในขณะที่ความเป็นเจ้าของและความชาญฉลาดในการใช้งานยังคงไม่ได้รับการแก้ไข
เครื่องหมายบวกและที่ต่อท้าย - มีรายการ + ความหมาย ACL อยู่ ส่วน @ ความหมายส่วนขยายแอตทริบิวต์บน macOS ไม่ได้เป็นส่วนหนึ่งของโหมด
เครื่องหมายบวกและที่ต่อท้ายคือตัวทำเครื่องหมายข้อมูลเมตาในโครงร่าง แต่ข้อเท็จจริงที่นำมาใช้นั้นแคบกว่า: ตัวแยกวิเคราะห์นี้จะปฏิเสธเนื่องจากอินพุตที่ยอมรับสิ้นสุดลงหลังจากเนื้อหาการอนุญาต บทความ 501 ระบุเครื่องหมายบวกต่อท้ายด้วย ACL โดยเฉพาะ CHMOD_SOURCES ไม่มีการตีความที่เทียบเท่าสำหรับเครื่องหมาย at ดังนั้นส่วนนี้จึงไม่ได้กำหนดระบบปฏิบัติการให้กับระบบปฏิบัติการ ซึ่งหมายถึงพื้นที่เก็บข้อมูลไม่สนับสนุน
ห้ามลบเครื่องหมายแบบสุ่มสี่สุ่มห้าเมื่อการเข้าถึงที่มีประสิทธิภาพมีความสำคัญ ให้แยกแกนอักขระเก้าหรือสิบตัวที่เป็นที่ยอมรับสำหรับการแปลงโหมดฐาน และตรวจสอบส่วนที่เหลือด้วยหลักฐานจากระบบกำเนิด เครื่องคิดเลขสามารถแสดงได้ว่า rw-r----- หมายถึง 640 ไม่สามารถอธิบายข้อมูลเมตาเพิ่มเติม อ่านคุณลักษณะเพิ่มเติม หรือกำหนดได้ว่ากลไกการควบคุมการเข้าถึงอื่นเปลี่ยนแปลงสิ่งที่ผู้ใช้หรือกระบวนการสามารถทำได้หรือไม่
เครื่องหมายบวกและที่ต่อท้ายคือตัวทำเครื่องหมายข้อมูลเมตาที่ตัวแยกวิเคราะห์นี้ปฏิเสธ
คำสั่งสถิติภายนอกไม่ได้ทำงานโดยเครื่องคิดเลขของเบราว์เซอร์ หน้านี้ไม่มีตัวรันคำสั่งหรือการเข้าถึงระบบไฟล์ ฟิลด์เส้นทางมีอยู่เพื่อสร้างข้อความ chmod ที่ยกมาเพื่อแสดงเท่านั้น ด้วยเหตุนี้ จึงไม่สามารถดึงข้อมูลโหมดปัจจุบัน เปรียบเทียบเอาต์พุตคำสั่งเฉพาะแพลตฟอร์ม หรือรับรองว่าสตริงที่วางมาจากยูทิลิตี้เฉพาะ ผู้ใช้จะต้องระบุค่าที่จะแปลง
เมื่อมีการจัดหาโหมดที่น่าเชื่อถือแล้ว เบราว์เซอร์จะทำการตรวจสอบการแสดงภาพโดยอิสระ ป้อนแกนสัญลักษณ์และเปรียบเทียบผลลัพธ์ฐานแปด เมทริกซ์ สรุป และการแสดงตัวอย่างงานที่มอบหมาย ข้อตกลงจะตรวจจับข้อผิดพลาดในการถอดเสียงและเลขคณิตภายในรูปแบบที่รองรับ จะไม่ตรวจสอบคำสั่งการรวบรวมภายนอก เปิดเผยความเป็นเจ้าของ หรือพิสูจน์ว่าสิทธิ์ที่แสดงนั้นมีผลกับออบเจ็กต์ที่มีการคัดลอกข้อความ
คำสั่งสถิติภายนอกไม่ได้ทำงานโดยเครื่องคิดเลขของเบราว์เซอร์
การถอดรหัส ACL ยังคงอยู่นอกเส้นทาง โมเดลประกอบด้วยเจ้าของ กลุ่ม อื่นๆ และบิตพิเศษสามรายการ โดยไม่มีรายการที่มีชื่อหรือมาสก์ ACL การถอดรหัสสิทธิ์ของ Windows ขาดหายไปอย่างเท่าเทียมกัน: ไม่มีรูปแบบข้อมูลประจำตัวของ Windows, ไวยากรณ์รายการควบคุมการเข้าถึง หรือการค้นพบแพลตฟอร์ม สามารถแปลงคอร์สไตล์ Unix เก้าตำแหน่งได้ แต่ไม่สามารถสร้างระบบการอนุญาตเพิ่มเติมขึ้นใหม่จากผลลัพธ์นั้นได้
ขอบเขตนี้ยังจำกัดการวินิจฉัยอีกด้วย โหมดพื้นฐานที่เพียงพอไม่ได้พิสูจน์ว่า ACL หรือนโยบายอื่นไม่เกี่ยวข้อง ในขณะที่โหมดที่จำกัดไม่ได้ระบุการให้สิทธิ์ที่เป็นไปได้ทั้งหมด เครื่องคิดเลขจะชำระเฉพาะบิตที่เป็นตัวแทนสิบสองบิตเท่านั้น ใช้เอาต์พุตเพื่อระบุโหมดปกติอย่างแม่นยำ จากนั้นสงวนการอ้างสิทธิ์เกี่ยวกับการอนุญาตที่มีประสิทธิผลสำหรับเครื่องมือและเอกสารที่เปิดเผยระบบการอนุญาตภายนอกจริง
ACL และการถอดรหัสสิทธิ์ของ Windows ยังคงอยู่นอกเส้นทาง
การอ่านโหมด ls-style จะกลายเป็นกลไกเมื่อแกนที่ยอมรับถูกแยกออก วางอักขระประเภทนำที่ได้รับการยอมรับหนึ่งตัว แบ่งเก้าตำแหน่งที่เหลือออกเป็นเจ้าของ กลุ่ม และอื่นๆ และอ่านทั้งหมด 4 เขียน 2 และดำเนินการ 1 ภายในแต่ละสาม เครื่องคิดเลขจะทำการแปลงและตรวจสอบตัวอักษรเฉพาะตำแหน่ง รวมถึงแบบฟอร์ม s, S, t และ T ที่นำมาใช้
เก็บข้อสรุปไว้เป็นสัดส่วนกับอินพุต การแปลงที่ประสบความสำเร็จพิสูจน์ให้เห็นว่าสตริงที่ยอมรับแม็ปกับโหมดฐานแปด เมทริกซ์ สรุป และการกำหนดที่สร้างขึ้นอย่างสม่ำเสมอ มันไม่ได้รันสถิติ ตรวจสอบเส้นทาง ถอดรหัสเครื่องหมายต่อท้าย ระบุความเป็นเจ้าของ หรือใช้ chmod ขีดจำกัดเหล่านี้ทำให้ผลลัพธ์มีประโยชน์: เป็นเรื่องเกี่ยวกับเลขคณิตของโหมดฐานอย่างแน่นอน และไม่มีการพูดถึงหลักฐานที่ไม่เคยรวบรวม