เครื่องคำนวณสิทธิ์ Unix (chmod)
เครื่องคำนวณ chmod แบบโต้ตอบ เลือกหรือยกเลิกบิตสิทธิ์สำหรับเจ้าของ กลุ่ม และอื่นๆ แล้วดูตัวเลข Octal และสัญลักษณ์แบบ Real-time หรือพิมพ์ตัวเลข Octal เพื่อถอดรหัส
| tools.unix-permissions-calculator.label.read | tools.unix-permissions-calculator.label.write | tools.unix-permissions-calculator.label.execute | Oct | |
|---|---|---|---|---|
| tools.unix-permissions-calculator.label.owner | 7 | |||
| tools.unix-permissions-calculator.label.group | 5 | |||
| tools.unix-permissions-calculator.label.other | 5 |
ค่าพรีเซ็ตที่ใช้บ่อย
chmod 755 filenameวิธีการทำงาน
ที่มาของระบบ Octal ในสิทธิ์ Unix
สิทธิ์ไฟล์ Unix ถูกออกแบบโดย Ken Thompson ในปี 1969 เป็นส่วนหนึ่งของ Unix ดั้งเดิมบนเครื่อง PDP-7 แต่ละไฟล์จัดเก็บบิตสิทธิ์เก้าบิตใน inode: สามบิตสำหรับเจ้าของ สามบิตสำหรับกลุ่ม และสามบิตสำหรับคนอื่นๆ การจัดกลุ่มบิตละสามบิตเป็นตัวเลข Octal หนึ่งหลัก (0–7) เป็นทางเลือกที่เป็นธรรมชาติที่สุด: หนึ่งหลักต่อ entity รวมสามหลัก แนวทางนี้ถูกกำหนดใน POSIX.1-1988 และยังคงไม่เปลี่ยนแปลงในทุกระบบ Linux, macOS, BSD และ Unix-like
รูปแบบสัญลักษณ์ (rwxr-xr-x) ปรากฏในผลลัพธ์ `ls -l` ตั้งแต่ยุคแรกของ Unix และกลายเป็นส่วนเสริมที่อ่านได้ของตัวเลข Octal POSIX กำหนดให้ทั้งสองรูปแบบเป็นมาตรฐาน `chmod u+x ไฟล์` ใช้รูปแบบสัญลักษณ์ ส่วน `chmod 755 ไฟล์` ใช้รูปแบบ Octal ทั้งสองนำไปสู่การดำเนินการเดียวกันใน kernel: การตั้งค่าบิตเฉพาะในช่อง mode ของ inode
ความหมายของแต่ละบิตสิทธิ์
สำหรับไฟล์ทั่วไป: อ่าน (r=4) อนุญาตให้เปิดและอ่านเนื้อหา; เขียน (w=2) อนุญาตให้แก้ไขหรือตัดไฟล์; รัน (x=1) อนุญาตให้รันเป็นโปรแกรม แต่ละบิตเป็นอิสระจากกัน ค่า Octal ของแต่ละ entity คือผลรวมของบิตที่ตั้งไว้: rwx=7, r-x=5, r--=4
สำหรับไดเรกทอรี ความหมายเปลี่ยนไป อ่าน (r) อนุญาตให้แสดงรายการด้วย `ls` รัน (x) หรือ 'search bit' อนุญาตให้เข้าด้วย `cd` และเข้าถึงไฟล์ตามชื่อ เขียน (w) อนุญาตให้สร้าง ลบ หรือเปลี่ยนชื่อไฟล์ภายใน ไดเรกทอรีที่มีสิทธิ์อ่านแต่ไม่มีรันแทบไม่มีประโยชน์ ไดเรกทอรีทั่วไปมักมีสิทธิ์ 755
รูปแบบสิทธิ์ที่ใช้บ่อยและข้อพิจารณาด้านความปลอดภัย
644 (rw-r--r--) เป็นมาตรฐานสำหรับไฟล์คอนฟิก HTML และข้อความ: เจ้าของแก้ไขได้ คนอื่นอ่านได้อย่างเดียว 755 (rwxr-xr-x) เป็นมาตรฐานสำหรับไดเรกทอรีและสคริปต์ที่รันได้: เจ้าของจัดการเนื้อหา คนอื่นเรียกดูและอ่านได้ 600 (rw-------) และ 700 (rwx------) จำกัดการเข้าถึงเฉพาะเจ้าของ เหมาะกับ SSH private key และไฟล์รหัสผ่าน อย่าใช้ 777 กับสิ่งที่เปิดเผยบนเว็บ การให้สิทธิ์เขียนกับ 'อื่นๆ' หมายความว่า process ใดๆ ในระบบสามารถเขียนทับไฟล์ได้
umask กำหนดสิทธิ์ default สำหรับไฟล์และไดเรกทอรีใหม่ umask 022 ที่พบบ่อยทำให้ไฟล์ใหม่ได้รับ 644 และไดเรกทอรีใหม่ได้รับ 755 เพราะบิต umask ถูกลบออกจากค่า default 666 (ไฟล์) และ 777 (ไดเรกทอรี) ระบบที่เข้มงวดด้านความปลอดภัยมักใช้ umask 027 หรือ 077
คำถามที่พบบ่อย
›755 หมายความว่าอะไร?
755 หมายความว่าเจ้าของมีสิทธิ์อ่าน+เขียน+รัน (7=4+2+1) กลุ่มมีสิทธิ์อ่าน+รัน (5=4+1) และอื่นๆ มีสิทธิ์อ่าน+รัน (5=4+1) นี่คือสิทธิ์มาตรฐานสำหรับไดเรกทอรีและสคริปต์ที่รันได้
›644 หมายความว่าอะไร?
644 หมายความว่าเจ้าของมีสิทธิ์อ่าน+เขียน (6=4+2) กลุ่มอ่านอย่างเดียว (4) และอื่นๆ อ่านอย่างเดียว (4) นี่คือค่า default สำหรับไฟล์ทั่วไปเช่น ไฟล์คอนฟิก เว็บเพจ และเอกสารข้อความ
›ทำไมไดเรกทอรีถึงต้องการสิทธิ์รัน?
สำหรับไดเรกทอรี บิตรันคือ 'search bit' หากไม่มีจะไม่สามารถ cd เข้าไดเรกทอรีหรือเปิดไฟล์ภายในด้วยเส้นทางได้ แม้จะมีสิทธิ์อ่าน ไดเรกทอรีที่มีสิทธิ์อ่านแต่ไม่มีรันแทบไม่มีประโยชน์ในทางปฏิบัติ
›เจ้าของ กลุ่ม และอื่นๆ ต่างกันอย่างไร?
เจ้าของคือบัญชีผู้ใช้ที่เป็นเจ้าของไฟล์ (กำหนดตอนสร้างหรือเปลี่ยนด้วย chown) กลุ่มคือกลุ่มที่กำหนดให้ไฟล์ (เปลี่ยนด้วย chgrp) ผู้ใช้ในกลุ่มนั้นได้รับสิทธิ์ของกลุ่ม อื่นๆ ครอบคลุมผู้ใช้ทุกคนในระบบที่ไม่ใช่เจ้าของและไม่ได้อยู่ในกลุ่ม
›SUID และ SGID คืออะไร?
SUID (Set User ID) และ SGID (Set Group ID) คือบิตสิทธิ์พิเศษนอกเหนือจากเก้าบิตมาตรฐาน เมื่อตั้งค่า SUID บนไฟล์รัน ไฟล์จะทำงานด้วยสิทธิ์ของเจ้าของไฟล์ ไม่ใช่ผู้เรียก ใช้ในคำสั่งเช่น passwd และ sudo SGID บนไดเรกทอรีทำให้ไฟล์ใหม่รับกลุ่มของไดเรกทอรี ในรูปแบบสัญลักษณ์แสดงเป็น 's' (เช่น rwsr-xr-x) และเพิ่ม 4000 หรือ 2000 ในค่า Octal (เช่น 4755)
›chmod 777 อันตรายไหม?
ใช่ โดยเฉพาะบนระบบที่ใช้ร่วมกันหรือเว็บเซิร์ฟเวอร์ 777 มอบสิทธิ์อ่าน เขียน และรันเต็มรูปแบบให้ผู้ใช้ทุกคนในระบบ process ใดก็ได้ รวมถึงเว็บแอปที่ถูกเจาะ สามารถเขียนทับหรือรันไฟล์ได้ บนเว็บเซิร์ฟเวอร์มักนำไปสู่การรันโค้ดโดยไม่ได้รับอนุญาต จำกัดสิทธิ์ให้เหลือเท่าที่จำเป็น
›ใช้คำสั่ง chmod อย่างไร?
ใช้ `chmod OCTAL เส้นทาง` สำหรับไฟล์เดียว หรือ `chmod -R OCTAL ไดเรกทอรี` เพื่อใช้แบบ recursive ตัวอย่าง: `chmod 644 index.html` หรือ `chmod 755 /var/www` ใช้ syntax สัญลักษณ์ได้เช่นกัน: `chmod u+x script.sh` เพิ่มสิทธิ์รันให้เจ้าของโดยไม่แตะบิตอื่น
›umask คืออะไรและเกี่ยวข้องกับสิทธิ์อย่างไร?
umask คือมาสก์ที่ใช้กับสิทธิ์ default ตอนสร้างไฟล์หรือไดเรกทอรีใหม่ umask 022 ลบสิทธิ์เขียนออกจากกลุ่มและอื่นๆ ทำให้ไฟล์ใหม่ได้ 644 และไดเรกทอรีใหม่ได้ 755 รัน `umask` ใน shell เพื่อดูค่าปัจจุบัน และ `umask ค่า` เพื่อเปลี่ยนในเซสชันปัจจุบัน
เครื่องมือที่เกี่ยวข้อง
อัปเดตล่าสุด: