เครื่องมือสำหรับนักพัฒนา · เครื่องคิดเลข Chmod
chmod vs chown: เหตุใดการเปลี่ยนโหมดจึงมักเป็นคันโยกที่ผิด
· เหตุใดจึงสำคัญ
chmod ยูนิกซ์ การควบคุมการเข้าถึง
บิตของโหมดหมายถึงบางสิ่งที่เกี่ยวข้องกับเจ้าของและกลุ่มเท่านั้น โพสต์นี้จะแยกคำสั่งทั้งสองออก และแสดงวิธีการตัดสินใจ ออกจากข้อผิดพลาดและข้อมูลประจำตัวของกระบวนการ ซึ่งเป็นคำสั่งที่คุณต้องการจริงๆ
สองคำสั่ง หนึ่งข้อผิดพลาด — การอนุญาตถูกปฏิเสธได้รับการแก้ไขสามครั้งในเดือนนี้ด้วยบรรทัด chmod และ chown สามบรรทัดที่แตกต่างกัน
chmod และ chown ระบุข้อมูลที่แตกต่างกัน แม้ว่าทั้งสองจะปรากฏขึ้นใกล้กับข้อผิดพลาดในการอนุญาตก็ตาม เครื่องคิดเลขจำลองบิตการอนุญาตสำหรับเจ้าของ กลุ่ม และอื่นๆ รวมถึงบิตพิเศษ ไม่ได้รับเจ้าของหรือกลุ่มในปัจจุบัน และไม่มีการดำเนินการเป็นเจ้าของ ดังนั้นโหมดจึงสามารถแปลได้อย่างถูกต้องในขณะที่ความสัมพันธ์ของข้อมูลระบุตัวตนยังคงไม่ทราบและยังไม่ผ่านการทดสอบ
แยกคำถามออกก่อน “750 อนุญาตอะไร” สามารถตอบได้: เจ้าของได้รับ rwx, กลุ่มได้รับ r-x และคนอื่นๆ ไม่ได้อะไรเลย “ใครเป็นเจ้าของสิ่งนี้” และ “ตัวตนใดที่ดำเนินกระบวนการ” ต้องใช้หลักฐานภายนอก การแก้ไขโหมดก่อนแก้ไขข้อมูลระบุตัวตนอาจทำให้คลาสผิด มุมมองที่ซิงโครไนซ์ไม่สามารถเลือกระหว่างการเปลี่ยนแปลง chmod และเจ้าของได้
ความเป็นเจ้าของก่อน จากนั้นจึงเลือกโหมด — วิธีที่เคอร์เนลเลือกเจ้าของ กลุ่ม หรือบุคคลอื่นสำหรับกระบวนการก่อนที่จะดูบิตใดๆ
การเลือกชั้นเรียนขึ้นอยู่กับตัวตนซึ่งเครื่องคิดเลขไม่เคยได้รับ เจ้าของ กลุ่ม และบุคคลภายนอกอื่นๆ เป็นหมวดหมู่ ไม่ใช่บัญชีที่ถูกค้นพบ ไม่สามารถรู้ได้ว่ากระบวนการตรงกับเจ้าของ เป็นของกลุ่มของไฟล์ หรืออยู่ในกระบวนการอื่น มันเพียงแสดงชุดสิทธิ์ทั้งสามชุดจากจำนวนเต็มเดียว ข้อมูลประจำตัวต้องมีการตรวจสอบจากภายนอก
ตัวตนจึงเป็นข้อกำหนดเบื้องต้นในการตัดสินความเกี่ยวข้อง ด้วยโหมด 640 เจ้าของได้อ่านและเขียน กลุ่มได้อ่าน และคนอื่นๆ ไม่มีอะไรเลย การแปลงนั้นแน่นอน แต่สามเท่านั้นไม่เป็นเช่นนั้น ไม่มี UID การเป็นสมาชิก การแมปคอนเทนเนอร์ หรือ ACL เข้าสู่สถานะ สร้างข้อเท็จจริงเหล่านั้นก่อน จากนั้นจึงประเมินบิตที่เกี่ยวข้อง
การเลือกชั้นเรียนขึ้นอยู่กับข้อมูลประจำตัวซึ่งเครื่องคิดเลขไม่ได้รับ
เครื่องมือความเป็นเจ้าของจะเปลี่ยนผู้ที่ครอบครองความสัมพันธ์ของเจ้าของหรือกลุ่ม ในขณะที่ chmod จะเปลี่ยนสิทธิ์ที่แนบมากับคลาสเหล่านั้น เครื่องคิดเลขนี้ใช้เฉพาะด้านของ chmod เท่านั้น มันสร้างข้อความ chmod ฐานแปดหรือสัญลักษณ์และไม่เคยส่งเสียง chown หรือ chgrp นอกจากนี้ยังไม่เปลี่ยนแปลงไฟล์อีกด้วย ฟิลด์เส้นทางจะสร้างเฉพาะตัวอย่างที่ยกมาเพื่อการตรวจสอบจากภายนอกเท่านั้น
การขยายโหมดอาจเปิดเผยคลาสเพิ่มเติมโดยไม่ต้องแก้ไขความเป็นเจ้าของ เปรียบเทียบ 750 กับ 757: ส่วนหลังจะเพิ่มการอ่านและดำเนินการอื่น ๆ เครื่องคิดเลขจะแสดงค่าเดลต้านั้นแต่ไม่สามารถบอกได้ว่าบัญชีอื่นได้รับประโยชน์หรือความเป็นเจ้าของทำให้เกิดความล้มเหลวหรือไม่ สร้างเจ้าของ จัดกลุ่ม และประมวลผลข้อมูลประจำตัวจากภายนอก จากนั้นให้สิทธิ์เฉพาะบิตที่จำเป็นแก่คลาสที่ต้องการเท่านั้น
รูปแบบกลุ่มที่ใช้ร่วมกัน — chgrp plus setgid บนไดเร็กทอรีบวก 2775 เป็นคำตอบมาตรฐานสำหรับผู้ใช้สองคนที่ต้องการเขียนทั้งคู่
เวิร์กโฟลว์กลุ่มที่ใช้ร่วมกันต้องใช้เครื่องมือและนโยบายการเป็นเจ้าของภายนอก ค่าที่ตั้งไว้ล่วงหน้า 775 มีป้ายกำกับว่า "แชร์กับกลุ่ม" เนื่องจากเปิดใช้งานการเขียนกลุ่มแล้ว ที่ตั้งไว้ล่วงหน้า 2775 เพิ่ม setgid, แสดงผล rwxrwsr-x; สำหรับไดเร็กทอรี ไฟล์ใหม่จะสืบทอดกลุ่มของไดเร็กทอรี คำอธิบายบิตเหล่านี้ไม่ถือเป็นการออกแบบการทำงานร่วมกันที่สมบูรณ์หรือคำแนะนำในการปรับใช้
หน้านี้ไม่สามารถสร้างกลุ่ม เลือกสมาชิก เรียกใช้ chgrp หรือกำหนดว่า 2775 เหมาะสมกับภาระงาน นอกจากนี้ยังไม่สามารถตรวจสอบ ACL เริ่มต้น umaks หรือพฤติกรรมของแอปพลิเคชันได้ ถือว่าค่าที่ตั้งล่วงหน้าเป็นเพียงเลขคณิต ไม่ใช่นโยบาย แก้ไขความเป็นเจ้าของและการเป็นสมาชิกในที่อื่น จากนั้นเปรียบเทียบโหมดผู้สมัครโดยคำนึงถึงการออกแบบไดเร็กทอรีที่ใช้ร่วมกันจริงในหลักฐานด้านสิ่งแวดล้อม
เวิร์กโฟลว์กลุ่มที่ใช้ร่วมกันต้องใช้เครื่องมือและนโยบายการเป็นเจ้าของภายนอก
หลังจากแก้ไขความเป็นเจ้าของที่อื่นแล้ว ให้ตรวจสอบโหมดไดเรกทอรี 750 เจ้าของได้รับการอ่าน เขียน และดำเนินการ กลุ่มได้รับการอ่านและดำเนินการ คนอื่นไม่ได้รับอะไรเลย กลุ่มอาจลงรายการและเข้าได้แต่ห้ามสร้าง เปลี่ยนชื่อ หรือลบรายการ เครื่องคิดเลขแสดงผล rwxr-x--- และ u=rwx,g=rx,o= โดยไม่ต้องตรวจสอบไดเรกทอรีหรือบัญชีจริง
ตรวจสอบ 640 แยกต่างหากสำหรับไฟล์ปกติ มันจะกลายเป็น rw-r-----: เจ้าของอ่านและเขียน อ่านเป็นกลุ่ม และไม่มีอะไรอื่นเลย หน้านี้แสดงผลลัพธ์ทั้งสองรายการแต่ไม่สามารถมอบหมายซ้ำได้ ระบุบัญชีการปรับใช้ หรือเลือกกลุ่มบริการ การอ้างสิทธิ์ความเหมาะสมสำหรับ /var/www จำเป็นต้องไม่แสดงภาระงานและหลักฐานระบุตัวตนที่นี่
ตัวอย่างการทำงาน: ตรวจสอบ 750 และ 640 หลังจากแก้ไขความเป็นเจ้าของที่อื่นแล้ว
การค้นพบข้อมูลประจำตัวของกระบวนการอยู่นอกเครื่องมือเบราว์เซอร์นี้ ไม่มีแหล่งที่มาใดเรียกใช้ ps อ่านการกำหนดค่าบริการ ตรวจสอบเนมสเปซคอนเทนเนอร์หรือสืบค้นฐานข้อมูลบัญชี เครื่องคิดเลขไม่สามารถระบุบัญชีที่ใช้งานอยู่หรือกลุ่มเสริมได้ ดังนั้นจึงไม่สามารถระบุได้ว่าระดับสิทธิ์อนุญาตใดที่ควบคุมการดำเนินการ การจัดประเภทนั้นต้องการหลักฐานปัจจุบันจากรันไทม์ที่รับผิดชอบและสภาพแวดล้อมระบบไฟล์
เมื่อระบุตัวตนจากภายนอกแล้ว ให้ตรวจสอบชั้นเรียนที่เกี่ยวข้องอย่างแม่นยำ หากกระบวนการควรใช้การเข้าถึงกลุ่ม 640 จะให้คลาสนั้นอ่านแต่ไม่ให้เขียน ในขณะที่ 660 เพิ่มการเขียนกลุ่ม เลขคณิตนี้ไม่ใช่คำแนะนำ บิตที่ถูกต้องขึ้นอยู่กับการดำเนินการที่จำเป็น เก็บการค้นพบและนโยบายไว้นอกตัวแปลง โดยใช้ข้อมูลดังกล่าวเพื่อป้องกันข้อผิดพลาดในการเป็นตัวแทน
การค้นพบข้อมูลประจำตัวของกระบวนการอยู่นอกเครื่องมือเบราว์เซอร์นี้
ACL และคอนเทนเนอร์ UID การแมปหายไปจากเครื่องคิดเลข โมเดลประกอบด้วยคลาสสามัญสามคลาสและบิตพิเศษ แต่ไม่มีรายการ ACL ที่มีชื่อ การแปลมาสก์หรือเนมสเปซ โหมดอาจดูเพียงพอในขณะที่อีกเลเยอร์หนึ่งจำกัดการเข้าถึง หรือถูกจำกัดในขณะที่ ACL ขยาย จำนวนเต็มที่ให้มาเพียงอย่างเดียวไม่สามารถแก้ไขความเป็นไปได้อย่างใดอย่างหนึ่งได้
ข้อมูลที่ขาดหายไปจะจำกัดทั้งการวินิจฉัยและการแก้ไข เส้นทางไม่สามารถเลือกระหว่างการเปลี่ยนแปลง chmod, chown, ACL หรือการแก้ไขการแมป สามารถถอดรหัสโหมดฐานที่ให้มาและแสดงตัวอักษรพิเศษ เช่น s, S, t และ T โดยถือว่าสิ่งนั้นเป็นชั้นหลักฐานเดียว ไม่ใช่การพิสูจน์เกี่ยวกับการเข้าถึงของบุคคลที่สามหรือคอนเทนเนอร์
ประเด็นสำคัญ: ตัดสินใจระบุตัวตนก่อนบิต จากนั้นใช้เครื่องคำนวณ Chmod เพื่อทำให้บิตกว้างพอๆ กับความต้องการระบุตัวตน
ตัดสินใจระบุตัวตนก่อนบิต โหมดทำงานผ่านเจ้าของ กลุ่ม และคลาสอื่นๆ แต่เครื่องคิดเลขจะรู้สิทธิ์มากกว่าบัญชีที่ครอบครองสิทธิ์เหล่านั้น หลังจากที่การตรวจสอบภายนอกสร้างความเป็นเจ้าของและเอกลักษณ์ของกระบวนการแล้ว ให้ป้อนผู้สมัครและตรวจสอบแฟล็กการอ่าน เขียน และดำเนินการตามที่ต้องการ การเปรียบเทียบค่าใกล้เคียงจะทำให้ขยายขนาดโดยไม่ตั้งใจก่อนที่คำสั่งจะออกจากเบราว์เซอร์
ผลลัพธ์สุดท้ายยังคงเป็นข้อเสนอ หน้านี้ปฏิเสธอินพุตที่มีรูปแบบไม่ถูกต้อง ซิงโครไนซ์รูปแบบฐานแปดและสัญลักษณ์ อธิบายความหมายของไฟล์และไดเร็กทอรี เครื่องหมายคำพูดพาธ และสร้างข้อความ chmod ไม่สามารถดำเนินการคำสั่ง เปลี่ยนความเป็นเจ้าของ ประเมิน ACL ตรวจสอบนโยบาย หรือทดสอบแอปพลิเคชันได้ ตรวจสอบการเปลี่ยนแปลงที่เสนอใดๆ ในระบบที่รับผิดชอบหลังจากยืนยันตัวตนแล้ว