ฉันเพิ่งสงสัยว่าอะไรคือความแตกต่างระหว่างสิทธิ์ไฟล์ตัวเลขสามถึงสี่หลัก ฉันได้รับการอนุญาตเชิงตัวเลขโดยการเรียกใช้stat --format "%a" $file_name
ความแตกต่างระหว่าง 0644 ถึง 644 คืออะไร
ฉันเพิ่งสงสัยว่าอะไรคือความแตกต่างระหว่างสิทธิ์ไฟล์ตัวเลขสามถึงสี่หลัก ฉันได้รับการอนุญาตเชิงตัวเลขโดยการเรียกใช้stat --format "%a" $file_name
ความแตกต่างระหว่าง 0644 ถึง 644 คืออะไร
คำตอบ:
ตัวเลขแรกในการอนุญาตสี่หลักคือผลรวมของid ผู้ใช้ชุด (4), ตั้งกลุ่ม id (2) และเหนียว (1) การอนุญาตสามหลักนั้นเหมือนกับการอนุญาตสี่หลักโดยมีการตั้งค่าตัวเลขแรกเป็นศูนย์ ดังนั้น:
หากไฟล์ที่มี ID ผู้ใช้ถูกเรียกใช้งานจะมีการดำเนินการราวกับว่าเจ้าของไฟล์ไม่ใช่ผู้ใช้ที่ทำการเรียกใช้งาน ตัวอย่างเช่น/bin/mount
โดยทั่วไปแล้วจะเป็นเจ้าของโดย root และมีสิทธิ์ 4755 ซึ่ง 4 หมายถึงว่าแม้ว่าผู้ใช้ปกติจะถูกดำเนินการโดยผู้ใช้จะทำงานด้วยสิทธิ์ของเจ้าของ (root)
การตั้งค่า ID กลุ่มในไดเรกทอรีมีประโยชน์สำหรับการแชร์ไฟล์
Sticky bit นั้นถูกใช้ในไดเรกทอรีเช่น/tmp
นั้นเพื่อให้ผู้ใช้ทุกคนสามารถสร้างไฟล์ได้ แต่ป้องกันไม่ให้เจ้าของที่ไม่ได้ทำการลบไฟล์ของคนอื่น ดังนั้นสิทธิ์ของ/tmp
โดยทั่วไปคือ 1777 โดยที่ 1 หมายถึงว่ามีการตั้งค่าบิตที่ติดหนึบ
จากman chmod
:
โหมดตัวเลขมาจากตัวเลขฐานแปดถึงหนึ่งถึงสี่ (0-7) ซึ่งได้มาจากการเพิ่มบิตด้วยค่า 4, 2 และ 1 หลักที่เว้นไว้จะถือว่าเป็นเลขศูนย์นำหน้า ตัวเลขตัวแรกจะเลือก ID ผู้ใช้ชุด (4) และตั้งค่า ID กลุ่ม (2) และการลบแบบ จำกัด หรือคุณสมบัติแบบเหนียว (1) ตัวเลขตัวที่สองเลือกการอนุญาตสำหรับผู้ใช้ที่เป็นเจ้าของไฟล์: อ่าน (4), เขียน (2), และดำเนินการ (1); ที่สามเลือกสิทธิ์สำหรับผู้ใช้รายอื่นในกลุ่มของไฟล์ด้วยค่าเดียวกัน และที่สี่สำหรับผู้ใช้อื่นที่ไม่ได้อยู่ในกลุ่มของไฟล์ด้วยค่าเดียวกัน