ทำความเข้าใจ Unix filesystem permissions

Linux

ทำความเข้าใจ Unix filesystem permissions

การกำหนดสิทธิ์การเข้าถึงของไฟล์และโฟลเดอร์ใน Unix และ Unix-like ง่ายๆ แค่ใช้ตัวเลข

มากกว่า 1 ปีที่ผ่านมา

2 min read

ในทุกๆระบบปฏิบัติการก็จะมีการกำหนดการเข้าถึงของ File หรือ Folder นั้นๆ ว่าใครสามารถเข้าถึงได้และทำอะไรได้บ้าง ซึ่งในลินุกซ์ หลายๆคนอาจจะเคยเห็นหรือเคยใช้คำสั่ง chmod กันมาบ้างแล้ว แต่ไม่เคยเข้าใจว่ามันทำงานยังไง วันนี้เราจะมาทำความเข้าใจกัน

Permissions

ก่อนอื่นมาทำความเข้าใจกันก่อนว่า มันมี Permission อะไร และมีสิทธิ์ทำอะไรได้บ้าง ซึ่งใน OS ที่เป็น Unix และ Unix-like จะมี Permission ทั้งหมด 3 ประเภท ดังนี้

  • Read (r) - สามารถอ่านไฟล์ได้
  • Write (w) - สามารถเขียนไฟล์ได้
  • Execute (x) - สามารถรันไฟล์ได้

User Types

ทีนี้มาดู User กันบ้าง ซึ่ง User จะแบ่งออกเป็น 3 ประเภท ดังนี้

  • Owner - คนที่สร้างไฟล์นั้นๆ
  • Group - คนที่อยู่ในกลุ่มเดียวกันกับ Owner
  • Everyone else - คนที่ไม่ได้อยู่ในกลุ่มเดียวกันกับ Owner

Number Permission

ใน Unix และ Unix-like จะใช้ตัวเลข 3 หลัก ในการกำหนด Permission

  • 4 - Read สามารถอ่านไฟล์ได้
  • 2 - Write สามารถเขียนไฟล์ได้
  • 1 - Execute สามารถรันไฟล์ได้
  • 0 - ไม่สามารถอ่าน เขียน หรือรันไฟล์ได้

ซึ่งถ้าลองรวมกัน จะเท่ากับ 7 (บอกเฉยๆ 😅)

chmod

ก่อนจะไปดูตัวอย่าง มาดูคำสั่งที่เราจำเป็นต้องใช้กันก่อน ก็คือ chmod หรือชื่อเต็มๆก็คือ change mode ซึ่งจะใช้ในการเปลี่ยน Permission ของไฟล์หรือโฟลเดอร์นั้น

ตัวอย่าง

เรามาดูตัวอย่างกันบ้าง ผมจะสร้างโฟลเดอร์ชื่อ hello และไฟล์ชื่อ index.html ขึ้นมาสำหรับตัวอย่างนี้

total 0
drwxr-xr-x  2 bandit  staff  64 Jun 11 02:45 hello
-rw-r--r--  1 bandit  staff   0 Jun 11 02:46 index.html

สังเกตว่า Folder จะมี d นำหน้าเพื่อบอกว่าเป็น directory และ - นำหน้าเพื่อบอกว่าอันนี้เป็นไฟล์ปกติ ถัดมาเรามาดู Permission ของ folder hello กันบ้าง โดยจะแบ่งออกเป็น 3 ส่วน คือ

  • ส่วนแรกคือ Permission ของ Owner ซึ่งเป็น rwx หมายถึง สามารถอ่านได้ เขียนได้ และรันได้
  • ส่วนที่สองคือ Permission ของ Group ซึ่งเป็น r-x หมายถึง สามารถอ่านได้ และรันได้
  • ส่วนที่สามคือ Permission ของ Everyone else ซึ่งเป็น r-x หมายถึง สามารถอ่านได้ และรันได้

สมมติว่าเราอยากเปลี่ยนเป็นแค่เราที่สร้างไฟล์สามารถอ่าน เขียน และ รันได้คนเดียว ก็จะเป็น

chmod 700 hello

ซึ่งตัวเลขที่เรากำหนดไป เรากำหนดให้เฉพาะ Owner เท่านั้นที่สามารถอ่าน เขียน และ รันได้ ส่วน Group และ Everyone else จะไม่สามารถทำอะไรได้เลย

ถ้าอยากลองกำหนดให้ group สามารถอ่านได้อย่างเดียว ก็จะเป็น

chmod 740 hello

เพียงเท่านี้ก็เรียบร้อย สำหรับการกำหนด Permission ของไฟล์และโฟลเดอร์ จะสังเกตว่าผมใช้คำว่า Unix และ Unix-like ซึ่งหมายถึง ไม่ใช่แค่ Linux เท่านั้น แต่ยังรวมถึง macOS ด้วย ก็สามารถใช้วิธีการเดียวกันได้ หวังว่าบทความนี้จะช่วยให้เข้าใจการกำหนด Permission ของไฟล์และโฟลเดอร์ได้มากขึ้นนะครับ สำหรับบทความนี้ก็ขอจบไว้เพียงเท่านี้ แล้วเจอกันใหม่ในบทความต่อไป สวัสดีครับ 🙏

Tags:

Filesystem