DevToolPal
ไทย

เครื่องคำนวณ chmod

แปลงสิทธิ์ไฟล์ Unix ระหว่างช่องทำเครื่องหมาย เลขฐานแปด (755) และแบบสัญลักษณ์ (rwxr-xr-x) รองรับ setuid, setgid และ sticky bit พร้อมคำสั่ง chmod ที่คัดลอกไปใช้ได้ทันที

ทำงานในเครื่อง ไม่มีการอัปโหลด

ตัวเลือก

สิทธิ์

อ่านเขียนรันพิเศษ
เจ้าของ
กลุ่ม
ผู้อื่น

ผลลัพธ์

ผลลัพธ์จะแสดงที่นี่

ใช้ทำอะไร

เครื่องคำนวณ chmod แปลงสิทธิ์ไฟล์ของ Unix และ Linux ระหว่างวิธีเขียนที่นิยมสามแบบ ได้แก่ ตารางช่องทำเครื่องหมายอ่าน เขียน และรัน, ตัวเลขฐานแปดอย่าง 755 และสตริงแบบสัญลักษณ์อย่าง rwxr-xr-x นอกจากนี้ยังสร้างคำสั่ง chmod ที่ตรงกันทั้งแบบฐานแปดและแบบสัญลักษณ์ อธิบายว่าใครทำอะไรได้บ้าง และรองรับบิตพิเศษ setuid, setgid และ sticky ทุกอย่างทำงานในเบราว์เซอร์ของคุณ

วิธีใช้

  1. ทำเครื่องหมายช่องของเจ้าของ กลุ่ม และผู้อื่น หรือพิมพ์โหมดลงในช่องป้อน รองรับเลขฐานแปด (644, 0644, 4755) สตริงแบบ ls -l (rw-r--r-- หรือ -rw-r--r-- ที่มีชนิดไฟล์นำหน้า) และนิพจน์ chmod เช่น u=rwx,g=rx,o= หรือ a+x
  2. ช่องทำเครื่องหมายและผลลัพธ์จะเปลี่ยนตามที่พิมพ์ และเมื่อคลิกช่อง โหมดจะถูกเขียนใหม่ในรูปแบบเดิม
  3. ตั้งชื่อไฟล์ใน ตัวเลือก และเปิด ทำซ้ำในโฟลเดอร์ย่อย (-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 ที่ตำแหน่งสิทธิ์รัน