เครื่องมือสำหรับนักพัฒนา · เครื่องคิดเลข Chmod
วิธีที่ umask กำหนดสิทธิ์เริ่มต้นของไฟล์และโฟลเดอร์ใหม่
· มันทำงานอย่างไร
chmod ยูนิกซ์ นักพัฒนาเวิร์กโฟลว์
ไฟล์ใหม่ไม่ได้เริ่มต้นที่ 777; ใช้มาสก์ก่อน โพสต์นี้แสดงการดำเนินการระดับบิตที่แน่นอน เหตุใดไฟล์และไดเร็กทอรีจึงแตกต่างกัน และวิธีให้เหตุผลเกี่ยวกับ umask 022, 027 และ 077
ไฟล์ที่เว็บเซิร์ฟเวอร์ไม่สามารถอ่านได้ - งาน cron เขียนไฟล์ 600 ลงในไดเร็กทอรี nginx ที่ให้บริการ และไม่มีใครรัน chmod กับสิ่งใดเลย
โหมดไฟล์ที่เพิ่งสังเกตสามารถถอดรหัสได้ที่นี่ แม้ว่าจะไม่ทราบกระบวนการที่สร้างไฟล์นั้นก็ตาม ป้อน 600 และเครื่องคิดเลขจะแสดง rw-------: เจ้าของอ่านและเขียน โดยไม่มีสิทธิ์สำหรับกลุ่มหรืออื่นๆ นั่นอธิบายบิตของผลลัพธ์ที่ให้มา ไม่ได้กำหนดว่าเหตุใดงานที่กำหนดเวลาไว้จึงสร้างค่านั้น หรือกระบวนการของเว็บสามารถอ่านไฟล์ได้หรือไม่
บทความ 501 จัดเตรียมอุปกรณ์ควบคุมการวินิจฉัยที่จำเป็น โหมดที่ถูกต้องอาจอยู่ร่วมกับความเป็นเจ้าของที่ไม่ถูกต้องหรือบิตดำเนินการหายไปในไดเร็กทอรีหลัก หน้านี้ไม่ได้รับข้อมูลประจำตัวของกระบวนการและข้อมูลเส้นทาง สามารถเปรียบเทียบ 600 กับ 640 ที่เสนอ และเปิดเผยบิตการอ่านกลุ่มที่เพิ่มเข้ามา แต่ไม่สามารถระบุแหล่งที่มาของโหมดดั้งเดิมเป็น umask, บริการ, เชลล์ หรือระบบไฟล์ได้
แหล่งที่มาของการอนุญาตใหม่ - โหมดที่ร้องขอ (โดยปกติคือ 666 สำหรับไฟล์ 777 สำหรับไดเร็กทอรี) และ umask ของกระบวนการ
โหมดการสร้างและ Umask ที่ร้องขอนั้นเป็นอินพุตเบื้องหลัง ไม่ใช่การควบคุมด้วยเครื่องคิดเลข ไม่มีฟิลด์ umask และไม่มีการดำเนินการที่สร้างไฟล์หรือไดเร็กทอรี ตัวอย่างโหมดการสร้างใดๆ จึงต้องมาถึงเป็นผลลัพธ์ที่คำนวณจากภายนอก เมื่อระบุแล้ว เครื่องคิดเลขสามารถแปลผลลัพธ์ดังกล่าวในรูปแบบเลขฐานแปด สัญลักษณ์ เมทริกซ์ สรุป และภาษาอังกฤษธรรมดาโดยไม่ต้องอ้างว่าได้ค่ามาอย่างไร
ขอบเขตที่ได้รับการแก้ไขนี้มีความสำคัญเนื่องจากเอาต์พุตที่ซิงโครไนซ์อาจดูน่าเชื่อถือมากกว่าที่เป็นอยู่ การป้อน 640 จะทำให้ได้ rw-r----- และระบุเจ้าของว่า read/write บวกกับการอ่านแบบกลุ่ม เพจสามารถตรวจสอบการเป็นตัวแทนนั้นได้ ไม่สามารถคาดเดาค่าเริ่มต้นสำหรับกระบวนการเข้าสู่ระบบ งานที่กำหนดเวลาไว้ บริการ คอนเทนเนอร์ หรือระบบจัดเก็บข้อมูลได้ เนื่องจากไม่มีบริบทใดปรากฏขึ้นในอินพุตหรือการใช้งาน
โหมดการสร้างที่ร้องขอและ Umask เป็นอินพุตเบื้องหลังที่ไม่ได้นำมาใช้ที่นี่
AND-NOT จะต้องดำเนินการเลขคณิตนอกเครื่องคิดเลขนี้ แกนกลางของมันยอมรับจำนวนเต็มที่สมบูรณ์หนึ่งตัวและกระจายออกเป็นแฟล็กที่มีชื่อ ไม่มีตัวถูกดำเนินการที่สองสำหรับมาสก์การสร้าง ด้วยเหตุนี้ เพจจึงไม่สามารถแสดงสูตรมาสก์ เปรียบเทียบการลบกับการดำเนินการระดับบิต หรือตัดสินใจว่าการคำนวณภายนอกดำเนินการอย่างถูกต้องก่อนที่จะเข้าสู่โหมดผลลัพธ์หรือไม่
สิ่งที่ตรวจสอบได้คือรูปแบบบิตสุดท้าย หากแหล่งที่เชื่อถือได้อื่นจัดหา 640 เมทริกซ์จะแสดงการอ่านและเขียนของเจ้าของ การอ่านแบบกลุ่ม และไม่มีสิทธิ์อื่น ๆ การเปลี่ยนกลุ่มการอ่านที่สร้างใหม่ 600 ในขณะที่เปลี่ยนการอ่านอื่นๆ ในการสร้างใหม่ 644 การเปลี่ยนเหล่านี้ตรวจสอบเลขคณิตของโหมดภายในตัวแปลงโดยไม่ต้องนำเสนอเป็นการคำนวณแบบการสร้างมาสก์หรือหลักฐานเกี่ยวกับกระบวนการที่มองไม่เห็น
AND-NOT เลขคณิตจะต้องดำเนินการนอกเครื่องคิดเลข
เครื่องคิดเลขสามารถเปรียบเทียบโหมดไฟล์และไดเร็กทอรีผลลัพธ์ได้ แต่ก็สร้างทั้งสองอย่างไม่ได้ เมื่อเลือก 644 คำอธิบายไฟล์ปกติจะอธิบายการอ่านและการเปลี่ยนแปลงไฟล์ การเปลี่ยนเป้าหมายเป็นไดเร็กทอรีจะเปลี่ยนคำกริยาเหล่านั้นเป็นการแสดงรายการ การแก้ไขรายการ และการเข้าถึงชื่อ จำนวนเต็มยังคงเป็น 644 ความแตกต่างดังกล่าวแสดงให้เห็นว่าเหตุใดประเภทเป้าหมายจึงมีความสำคัญโดยไม่ต้องยืนยันว่าการสร้างใดเป็นค่าเริ่มต้นที่คำขอของโปรแกรมใดๆ
สามารถตรวจสอบผลลัพธ์ 755 ที่ให้แยกกันในลักษณะเดียวกัน จอแสดงผลของมันคือ rwxr-xr-x โดยมีการเรียกใช้งานสำหรับทุกคลาส 644 คือ rw-r--r-- โดยไม่มีการดำเนินการตลอด หน้านี้เผยให้เห็นความแตกต่างนั้นอย่างชัดเจน ไม่ได้มาจากค่าจาก 666, 777, 022 หรืออินพุตเบื้องหลังอื่นๆ เนื่องจากการคำนวณเหล่านั้นไม่ได้ถูกนำมาใช้ใน CHMOD_SOURCES
เครื่องคิดเลขสามารถเปรียบเทียบโหมดไฟล์และไดเร็กทอรีผลลัพธ์ได้ แต่จะสร้างทั้งสองอย่างไม่ได้
สำหรับตัวอย่างมาสก์จำกัด ให้เก็บการคำนวณไว้ภายนอกและถอดรหัสเฉพาะผลลัพธ์ที่ระบุเท่านั้น หากไฟล์ปกติที่สังเกตได้คือ 640 เครื่องคิดเลขจะแสดงผล rw-r-----; หากไดเร็กทอรีที่สังเกตได้คือ 750 มันจะแสดงผล rwxr-x--- เจ้าของยังคงเข้าถึงได้กว้างขึ้นในทั้งสองกลุ่ม กลุ่มจะได้รับชุดที่แคบกว่า และคนอื่นๆ ไม่ได้รับเลย ข้อความเหล่านั้นเป็นไปตามโดยตรงจากโหมดที่เสร็จสมบูรณ์
คู่ที่จัดหาจากภายนอกอีกคู่ 600 และ 700 ทำให้วิธีการตรวจสอบเดียวกันนี้มองเห็นได้โดยไม่ต้องอ้างแหล่งที่มา โหมด 600 ให้เฉพาะเจ้าของอ่านและเขียนในไฟล์ โหมด 700 ให้เจ้าของอ่าน เขียน และดำเนินการในไดเร็กทอรีเท่านั้น ตัวแปลงสามารถยืนยันแต่ละคลาสและบิตได้ แต่ไม่สามารถจับคู่ผลลัพธ์อย่างใดอย่างหนึ่งกับการตั้งค่า umask เฉพาะจากหลักฐานของตัวเองได้
ตัวอย่างการทำงาน: ถอดรหัสผลลัพธ์ที่คำนวณจากภายนอกสำหรับมาสก์ที่มีข้อจำกัด
เมื่อกระบวนการได้รับ Umask นั้นเป็นหลักฐานจากพื้นที่เก็บข้อมูลภายนอก เครื่องคิดเลขไม่มีการผสานรวมกับเชลล์ ตัวกำหนดเวลา ผู้จัดการบริการ คอนเทนเนอร์ หรือสภาพแวดล้อมกระบวนการ การตั้งชื่อระบบใดระบบหนึ่งว่าเป็นสาเหตุของโหมดจึงอาจเกินสิ่งที่หน้าสังเกตได้ เริ่มต้นด้วยโหมดที่น่าเชื่อถือซึ่งรวบรวมจากที่อื่น จากนั้นใช้เส้นทางนี้เพื่อทำให้เจ้าของ กลุ่ม และบิตอื่นๆ ชัดเจนเท่านั้น
การแสดงตัวอย่างคำสั่งไม่ได้ปิดช่องว่างหลักฐานนั้น สามารถอ้างอิงเส้นทางที่ให้มาและแสดง -R ได้หรือไม่ก็ได้ แต่จะไม่เปิดเส้นทางหรืออ่านการตั้งค่ากระบวนการ ในทำนองเดียวกัน ตัวเลือกเป้าหมายจะเปลี่ยนภาษาอธิบายแทนที่จะค้นหาประเภทออบเจ็กต์ การแปลงที่สอดคล้องกันทำให้คำถามเกี่ยวกับการอนุญาตแคบลง ไม่เปิดเผยว่าองค์ประกอบใดที่เลือกโหมดหรือการเลือกนั้นตั้งใจหรือไม่
เมื่อกระบวนการได้รับ Umask นั้นเป็นหลักฐานจากพื้นที่เก็บข้อมูลภายนอก
ACL เริ่มต้นและโหมดการสร้างที่ชัดเจนอยู่นอกเครื่องมือนี้ โมเดลข้อมูลมีคลาสเจ้าของหนึ่งคลาส คลาสกลุ่มหนึ่งคลาส คลาสอื่นๆ ทั้งหมด และบิตพิเศษสามบิต ไม่มีรายการ ACL ที่มีชื่อ, ACL มาสก์, การเรียกการสร้าง หรืออาร์กิวเมนต์ของโปรแกรม เครื่องคิดเลขจึงไม่สามารถตัดสินใจได้ว่าโหมดที่สมบูรณ์นั้นเกิดขึ้นจากเลเยอร์ควบคุมการเข้าถึงอื่นหรือจากแอปพลิเคชันที่ส่งคำขอเฉพาะ
โหมดยังคงสามารถตรวจสอบได้โดยไม่ยุบกลไกเหล่านั้นเข้าด้วยกัน ป้อนค่าฐานแปดที่สังเกตได้ ยืนยันตำแหน่งสัญลักษณ์ทั้งเก้าตำแหน่ง และเปรียบเทียบเมทริกซ์กับข้อมูลสรุปสี่หลัก หากพวกเขาเห็นด้วย โหมดดั้งเดิมจะถูกถอดรหัสอย่างถูกต้อง การอ้างสิทธิ์ใดๆ เกี่ยวกับค่าเริ่มต้น เอฟเฟกต์ ACL หรือการทำงานของโปรแกรมจำเป็นต้องมีหลักฐานจากผู้สร้างและระบบไฟล์ ไม่ใช่การตีความจำนวนเต็มเดียวกันแบบอื่น
ACL เริ่มต้นและโหมดเปิดที่ชัดเจนอยู่นอกเครื่องมือนี้
ขั้นตอนการทำงานที่ถูกต้องจะถูกคำนวณที่อื่น จากนั้นตรวจสอบโหมดผลลัพธ์ที่นี่ ระบุสตริงรูปแบบฐานแปดหรือ ls ที่เสร็จสมบูรณ์ และปล่อยให้ฟิลด์ที่ซิงโครไนซ์เปิดเผยแต่ละบิต การตรวจสอบความถูกต้องจะตรวจจับตัวเลขและตัวอักษรฐานแปดที่มีรูปแบบไม่ถูกต้องในตำแหน่งสัญลักษณ์ที่ไม่ถูกต้อง โดยจะไม่ตรวจสอบนิพจน์ Umask ค้นหาบริบทการสร้าง หรือคาดการณ์ว่าไฟล์หรือไดเร็กทอรีในอนาคตจะได้รับอะไร
ถือว่าผลลัพธ์เป็นชั้นการวินิจฉัยชั้นเดียว การถอดรหัส 640 หรือ 750 สามารถเปิดเผยการอนุญาตที่ไม่คาดคิดหรือบิตดำเนินการที่หายไป ในขณะที่บทความ 501 เตือนให้เราตรวจสอบการเป็นเจ้าของและการข้ามผ่านไดเรกทอรีหลักแยกกัน หยุดก่อนที่จะกำหนดสาเหตุ เครื่องคิดเลขจะพิสูจน์ว่าค่าที่ให้มาจับคู่กับสิทธิ์อย่างไร ไม่มีพื้นฐานสำหรับการอ้างสิทธิ์เกี่ยวกับเชลล์ บริการ คอนเทนเนอร์ ACL หรือค่าเริ่มต้นของระบบไฟล์