Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> ซอฟต์แวร์

เข้าใจ Linux File Permissions: Chmod 777 คืออะไร และใช้อย่างปลอดภัยอย่างไร

หากคุณเป็นผู้ใช้ Linux ใหม่ น่าจะเคยเจอคำสั่ง Chmod มาแล้ว อาจมีคนบอกว่า “chmod 777” เพื่อย้ายไฟล์ไปโฟลเดอร์หนึ่ง และมันได้ผล! แต่คำสั่ง chmod ทำอะไร? และตัวเลขเหล่านี้หมายถึงอะไร?

บทความนี้จะอธิบายทุกอย่างที่ต้องรู้เกี่ยวกับ Linux file permissions สำคัญมากที่จะเข้าใจเพื่อใช้คำสั่ง chmod และตัวเลขที่สอดคล้องกับระดับการเข้าถึง ไม่ว่าคุณจะใช้ Ubuntu, Fedora, หรือ distro อื่น ควรทราบว่าเมื่อไหร่ควรตั้งค่า permissions 777 และเมื่อไหร่ควรใช้ค่าอื่น

ใน Linux ระบบปฏิบัติการกำหนดว่าใครสามารถเข้าถึงไฟล์ได้ จาก file permission, ownership, และ attributes ระบบอนุญาตให้คุณ (owner หรือ admin) กำหนดข้อจำกัดการเข้าถึงไฟล์และไดเรกทอรีต่างๆ คุณสามารถเพิ่มความปลอดภัยของระบบโดยให้สิทธิ์เข้าถึงเฉพาะผู้ใช้และโปรแกรมที่ไว้ใจ

เข้าใจ User Classes (กลุ่มผู้ใช้)

ทุกไฟล์และไดเรกทอรีมีเจ้าของ (owner) และกลุ่ม (group) เฉพาะ หมายถึงมี 3 ประเภทของผู้ใช้ ที่สามารถกำหนดระดับการเข้าถึงได้ แบ่งเป็น:

  • Owner (เจ้าของ)
  • Group (กลุ่ม)
  • Others (คนอื่น)

สามารถเห็นกลุ่มเหล่านี้ใน Ubuntu ได้โดย คลิกขวาไดเรกทอรี quelconque เลือก Properties ไปแท็บ Permissions

เข้าใจ Linux File Permissions: Chmod 777 คืออะไร และใช้อย่างปลอดภัยอย่างไร

Owner คือผู้มีอำนาจสูงสุด ปกติมีสิทธิ์เต็มทุกไฟล์/ไดเรกทอรี และเปลี่ยน permission ของผู้ใช้อื่นได้

Group ประกอบด้วยผู้ใช้หลายคน ที่ได้รับระดับการเข้าถึงจาก Owner เช่น กลุ่มผู้ใช้อาจถูกตัดสิทธิ์แก้ไขไฟล์ แต่ได้รับอนุญาตให้อ่านไฟล์นั้น

Others คือผู้ใช้ทั่วไป (guest) ที่ไม่อยู่ใน 2 กลุ่มข้างต้น โดยค่าเริ่มต้นสิทธิ์มักถูกจำกัด Owner ตัดสินใจว่า guest ทำอะไรได้/ไม่ได้

เข้าใจ File Permission Levels (ระดับสิทธิ์ไฟล์)

ในฐานะ Owner คุณสามารถกำหนด 3 ระดับการเข้าถึงให้ไฟล์และไดเรกทอรี:

  1. Read (อ่าน): เข้าถึงได้อย่างจำกัด อ่านไฟล์หรือดูเนื้อหาไดเรกทอรีเท่านั้น ไม่สามารถแก้ไข ลบ หรือเพิ่มไฟล์ได้
  2. Write (เขียน): อ่านและแก้ไขไฟล์ได้ หากกำหนดให้ไดเรกทอรี จะลบ/เพิ่มไฟล์ในไดเรกทอรีนั้นได้
  3. Execute (รัน): สำคัญเมื่อรัน/execute ไฟล์ ตัวอย่าง ไม่สามารถรันสคริปต์หรือโปรแกรมได้หากไม่มีสิทธิ์ Execute

โดยการรวม Classes และ Permissions คุณควบคุมได้ว่าแต่ละผู้ใช้เข้าถึงไฟล์/ไดเรกทอรีได้มากแค่ไหน

Permission Symbols และ Numbers (สัญลักษณ์และตัวเลขของสิทธิ์)

File permissions แสดงได้ทั้งแบบตัวเลขและสัญลักษณ์ ใช้ทั้งสองแบบเปลี่ยน permission ได้ วิธีตัวเลขง่ายกว่า แต่ควรเข้าใจสัญลักษณ์ด้วย มาดูสัญลักษณ์ก่อน

File Permission Symbols

ดู permissions ของทุกอย่างในไดเรกทอรีด้วยคำสั่งในเทอร์มินัล:

ls -l

เข้าใจ Linux File Permissions: Chmod 777 คืออะไร และใช้อย่างปลอดภัยอย่างไร

เข้าไดเรกทอรีได้ด้วยคำสั่ง cd หากเป็นมือใหม่ทั้งหมด อ่านบทความคำสั่ง Linux พื้นฐานของเรา

ในตัวอย่าง ไดเรกทอรีมี 2 โฟลเดอร์ย่อยและ 1 ไฟล์ Permissions เขียนด้วย (1+) 9 สัญลักษณ์ แบ่งเป็น triplets เพื่อความเข้าใจง่าย มาดูชุดแรกของโฟลเดอร์ Books:

drwxrwxr-x

แบ่งเพื่ออ่านง่าย:

d rwx rwx r-x

ตัวแรก d = directory (อาจเป็น dash - หากเป็นไฟล์ ตามชุดที่ 3 ของ Outline.docx)

ต่อมา 3 กลุ่มสัญลักษณ์ กลุ่มแรก = Owner permissions กลุ่มที่ 2 = Group กลุ่มที่ 3 = Others

แต่ละกลุ่ม 3 ตัวอักษร = read, write, execute ตามลำดับ ดังนั้น Owner มีสิทธิ์อ่าน เขียน รัน ทุกไฟล์/โฟลเดอร์ใน Test directory

เข้าใจ Linux File Permissions: Chmod 777 คืออะไร และใช้อย่างปลอดภัยอย่างไร

ถ้าเห็น dash (-) แทน r, w, หรือ x หมายถึงไม่มีสิทธิ์นั้น

File Permission Numbers

รูปแบบตัวเลขของ file permissions เรียบง่าย ตัวเลข permission มี 3 หลัก:

  • หลักแรก = เจ้าของไฟล์
  • หลักที่สอง = กลุ่มของไฟล์
  • หลักสุดท้าย = คนอื่นทั้งหมด

ตัวเลข 0-7 โดย:

  • 4 = read
  • 2 = write
  • 1 = execute
  • 0 = ไม่มีสิทธิ์

ตัวเลข permission ของแต่ละกลุ่ม = ผลรวมของค่าสิทธิ์ กล่าวคือ แต่ละหลักเป็นผลรวมของ 4, 2, 1, 0 รายการสิทธิ์ทั้งหมด:

  • 0 (0+0+0) = ไม่มีสิทธิ์
  • 1 (0+0+1) = execute เท่านั้น
  • 2 (0+2+0) = write เท่านั้น
  • 3 (0+2+1) = write + execute
  • 4 (4+0+0) = read เท่านั้น
  • 5 (4+0+1) = read + execute
  • 6 (4+2+0) = read + write
  • 7 (4+2+1) = สิทธิ์ทั้งหมด

ตัวอย่าง permission 644 = เจ้าของอ่าน/เขียนได้ กลุ่มและคนอื่นอ่านอย่างเดียว การตั้งค่าด้วยตัวเลขต้องการแค่คณิตศาสตร์พื้นฐาน

เข้าใจ Linux File Permissions: Chmod 777 คืออะไร และใช้อย่างปลอดภัยอย่างไร

Permission 777

เห็นได้ชัดว่า permission 777 ให้ read, write, execute แก่ทั้ง 3 กลุ่มผู้ใช้ กล่าวคือ ใครก็ตามที่เข้าถึงระบบได้ สามารถอ่าน แก้ไข และรันไฟล์ได้ ใช้เฉพาะเมื่อไว้ใจผู้ใช้ทั้งหมด และไม่กังวลเรื่องความปลอดภัย

Permission 777 ใช้บ่อยเพราะสะดวก แต่ควรใช้น้อยที่สุด เราแนะนำ ไม่ควรใช้เลย เพราะความเสี่ยงด้านความปลอดภัยสูงมาก ผู้ใช้ไม่ได้รับอนุญาตอาจโจมตีระบบ หรือเปลี่ยนเว็บไซต์ให้กระจายมัลแวร์

ควรให้ permission 755 แทน นั่นคือ เจ้าของมีสิทธิ์เต็ม กลุ่มและคนอื่นอ่านและรันได้ แต่แก้ไขไม่ได้ tanpa การอนุมัติจากคุณ

การเปลี่ยน File Permissions ด้วย Chmod

เปลี่ยน file permission ด้วยคำสั่ง chmod วิธีพื้นฐานที่สุด (ไม่มีตัวแปรอื่น):

chmod 777 filename

แทนที่ “filename” ด้วยชื่อไฟล์และ path

จำไว้ว่า ผู้ที่มีสิทธิ์เปลี่ยน permission มีได้แค่: root user, เจ้าของไฟล์, และผู้ที่มี sudo privileges