ใช้ทำอะไร
เครื่องคำนวณ chmod แปลงสิทธิ์ไฟล์ของ Unix และ Linux ระหว่างวิธีเขียนที่นิยมสามแบบ ได้แก่ ตารางช่องทำเครื่องหมายอ่าน เขียน และรัน, ตัวเลขฐานแปดอย่าง 755 และสตริงแบบสัญลักษณ์อย่าง rwxr-xr-x นอกจากนี้ยังสร้างคำสั่ง chmod ที่ตรงกันทั้งแบบฐานแปดและแบบสัญลักษณ์ อธิบายว่าใครทำอะไรได้บ้าง และรองรับบิตพิเศษ setuid, setgid และ sticky ทุกอย่างทำงานในเบราว์เซอร์ของคุณ
วิธีใช้
- ทำเครื่องหมายช่องของเจ้าของ กลุ่ม และผู้อื่น หรือพิมพ์โหมดลงในช่องป้อน รองรับเลขฐานแปด (
644,0644,4755) สตริงแบบls -l(rw-r--r--หรือ-rw-r--r--ที่มีชนิดไฟล์นำหน้า) และนิพจน์ chmod เช่นu=rwx,g=rx,o=หรือa+x - ช่องทำเครื่องหมายและผลลัพธ์จะเปลี่ยนตามที่พิมพ์ และเมื่อคลิกช่อง โหมดจะถูกเขียนใหม่ในรูปแบบเดิม
- ตั้งชื่อไฟล์ใน ตัวเลือก และเปิด ทำซ้ำในโฟลเดอร์ย่อย (-R) หากต้องการใช้โหมดกับทั้งโครงสร้างไดเรกทอรี แล้วคัดลอกคำสั่งได้ในคลิกเดียว
โหมดที่ใช้บ่อย
chmod 755 deploy.sh # rwxr-xr-x
chmod 644 index.html # rw-r--r--
chmod 600 ~/.ssh/id_ed25519 # rw-------
chmod 1777 /tmp # rwxrwxrwt
- 755 สำหรับไดเรกทอรี สคริปต์ และโปรแกรม เจ้าของแก้ไขได้ ทุกคนอ่านและรันได้
- 644 สำหรับไฟล์ทั่วไป เช่น หน้าเว็บและรูปภาพ
- 600 สำหรับไฟล์ส่วนตัว เช่น คีย์ SSH และไฟล์
.envมีแค่เจ้าของที่อ่านได้ SSH จะไม่ยอมใช้คีย์ที่คนอื่นอ่านได้ - 700 สำหรับไดเรกทอรีส่วนตัว และ 775/664 เมื่อผู้ใช้หลายคนในกลุ่มใช้โปรเจกต์ร่วมกัน
ตัวเลขทำงานอย่างไร
ผู้ใช้แต่ละกลุ่มได้เลขฐานแปดหนึ่งหลักจากการบวก อ่าน = 4, เขียน = 2 และ รัน = 1 สำหรับไดเรกทอรี อ่านหมายถึงแสดงรายชื่อไฟล์ เขียนหมายถึงสร้างและลบไฟล์ข้างใน ส่วนรันหมายถึงเข้าไปในไดเรกทอรีหรือเข้าถึงไฟล์ข้างใน
หลักนำหน้าที่ใส่หรือไม่ใส่ก็ได้เก็บบิตพิเศษ ได้แก่ setuid = 4, setgid = 2, sticky = 1 ในรูปแบบสัญลักษณ์ บิตเหล่านี้จะแทนตัวอักษรรัน โดย setuid และ setgid เป็น s และ sticky เป็น t ตัว S หรือ T ตัวใหญ่หมายถึงตั้งบิตพิเศษแต่ไม่มีสิทธิ์รัน ซึ่งแทบทุกครั้งเป็นความผิดพลาด
เครื่องคำนวณยังแสดง umask ที่สอดคล้องกัน คือบิตที่ umask ค่าเริ่มต้นตัดออกจาก 777 เพื่อให้ได้โหมดนั้น umask 022 จะได้ไดเรกทอรี 755 และไฟล์ 644
คำถามที่พบบ่อย
› chmod 755 หมายความว่าอะไร?
แต่ละหลักแทนผู้ใช้หนึ่งกลุ่ม คือ เจ้าของ กลุ่ม และผู้อื่น 7 = อ่าน (4) + เขียน (2) + รัน (1) ส่วน 5 = อ่าน + รัน ดังนั้น 755 ให้เจ้าของทำได้ทุกอย่าง ส่วนคนอื่นอ่านและรันไฟล์ได้ เขียนเป็น rwxr-xr-x เป็นโหมดที่ใช้กับสคริปต์และไดเรกทอรีเป็นปกติ
› 644 กับ 755 ต่างกันอย่างไร?
644 (rw-r--r--) ไม่มีบิตรัน จึงเหมาะกับไฟล์ทั่วไปอย่าง HTML รูปภาพ และไฟล์ตั้งค่า 755 เพิ่มสิทธิ์รันให้ทุกคน ซึ่งโปรแกรมต้องมีจึงจะรันได้ และไดเรกทอรีต้องมีจึงจะเข้าไปได้
› ทำไม chmod 777 จึงไม่ควรใช้?
777 ให้ผู้ใช้ทุกคนในระบบแก้ไขหรือแทนที่ไฟล์ได้ บนเว็บเซิร์ฟเวอร์หมายความว่าโปรเซสใดก็ตามที่ถูกเจาะก็เขียนทับโค้ดของคุณได้ ควรแก้เจ้าของด้วย chown แล้วใช้ 755 กับไดเรกทอรีและ 644 กับไฟล์
› setuid, setgid และ sticky bit คืออะไร?
เป็นเลขฐานแปดหลักที่สี่ที่อยู่ด้านหน้า setuid (4) ทำให้โปรแกรมทำงานในนามเจ้าของ setgid (2) ทำงานในนามกลุ่ม หรือทำให้ไฟล์ใหม่ในไดเรกทอรีได้กลุ่มเดียวกัน และ sticky bit (1) ป้องกันไม่ให้ผู้ใช้ลบไฟล์ของคนอื่นในไดเรกทอรีที่ใช้ร่วมกันอย่าง /tmp ในผลลัพธ์ของ ls จะเห็นเป็น s และ t ที่ตำแหน่งสิทธิ์รัน