Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

ทำความเข้าใจสิทธิ์ไฟล์ใน Linux: Chmod 777 หมายถึงอะไร?

ผู้ใช้ Linux บ่อยครั้งเจอ error "Permission denied" แล้วหาคำตอบมาเป็น "chmod 777" แต่ 777 หมายถึงอะไร? ทำไมไม่ใช่ 888 หรือ 999? มาเข้าใจระบบสิทธิ์ไฟล์ Unix/Linux กัน

โครงสร้างสิทธิ์ไฟล์ (File Permissions)

มี 2 มิติหลัก:

1. Classes (ผู้เข้าถึง) - 3 กลุ่ม

  • Owner (User): ผู้สร้างไฟล์/โฟลเดอร์ (ปกติคือคุณใน ~)
  • Group: กลุ่มผู้ใช้ที่แชร์สิทธิ์ร่วมกัน
  • Others: ผู้ใช้อื่นๆ ทุกคน (Public)

2. Permissions (สิทธิ์การทำ) - 3 ประเภท

  • Read (r / 4): อ่านไฟล์/ลิสต์ไดเรกทอรีได้
  • Write (w / 2): แก้ไข/ลบ/สร้างไฟล์ได้
  • Execute (x / 1): รันไฟล์ (script, binary) / เข้าไดเรกทอรีได้

ระบบเลขออคทัล (Octal Notation)

แต่ละ permission มีค่า bit: Read=4, Write=2, Execute=1 รวมกันได้ค่า 0-7:

ค่าสิทธิ์Binary
0ไม่มีสิทธิ์000
1Execute001
2Write010
3Write + Execute011
4Read100
5Read + Execute101
6Read + Write110
7Read + Write + Execute (Full)111

ความหมายของ 777

3 หลัก = Owner, Group, Others ตามลำดับ

  • 777: ทุกคน (Owner, Group, Others) อ่าน เขียน รัน ได้หมด = อันตราย ใครก็แก้ไข/ลบ/รันไฟล์ได้
  • 755: Owner ทำได้หมด, Group/Others อ่าน/รันได้ แก้ไขไม่ได้ (มาตรฐาน web server, script)
  • 644: Owner อ่าน/เขียนได้, Group/Others อ่านอย่างเดียว (มาตรฐานไฟล์ทั่วไป)
  • 655: Owner อ่าน/เขียน, Group/Others อ่าน/รัน

การเปลี่ยนสิทธิ์ด้วยคำสั่ง chmod

chmod 777 /path/to/file

หรือใช้ symbolic mode (อ่านง่ายกว่า):

chmod u+rwx,g+rwx,o+rwx file  # เทียบเท่า 777
chmod u=rwx,go=rx file         # เทียบเท่า 755
chmod a+r file                 # ให้ทุกคนอ่านได้

แนวทางปฏิบัติที่ดี (Best Practices)

  • หลีกเลี่ยง 777 เว้นแต่จำเป็นมาก และควรเปลี่ยนกลับทันทีหลังใช้งานเสร็จ
  • เว็บเซิร์ฟเวอร์: โฟลเดอร์ 755, ไฟล์ 644
  • สคริปต์ที่ต้องรัน: 755 หรือ 700 (owner รันอย่างเดียว)
  • ใช้ chown เปลี่ยนเจ้าของ + chmod จัดสิทธิ์ ให้เหมาะสมกับกลุ่มผู้ใช้

ตรวจสอบสิทธิ์

ls -l /path/to/file
# Output: -rwxr-xr-x 1 user group 1234 Jan 1 12:00 file
#         │││││││││
#         ││││││││└─ Others: r-x (5)
#         │││││││└──── Group: r-x (5)
#         ││││││└────── Owner: rwx (7)
#         └──────────── File type (- = file, d = directory)

ทำความเข้าใจสิทธิ์ไฟล์ = ควบคุมความปลอดภัยระบบได้ดีขึ้น อย่าแค่ chmod 777 ไปหมด!