File permission

ลินุกซ์ทุกค่ายจะมีการกำหนดสิทธิ์การใช้งานและเข้าถึง file เหมือนกันซึ่งจะกำหนด 3 สิทธิ์หลักๆ คือ

  1. read (r) - สิทธิ์การอ่าน
  2. write (w) - สิทธิ์การเขียน-ลบ
  3. execute (x) - สิทธ์การใช้งาน

โดยปกติแล้ว file แต่ละ file จะมีถูกกำหนดว่าเป็นของใคร (user) และ เป็นของกลุ่มผู้ใช้ไหน (group) ดังนั้นการควบคุมการเข้าถึงจะอ้างผู้ใช้ (user) และ กลุ่มผู้ใช้ (group) เป็นสำคัญ นอกจากนี้ยังกำหนดสิทธิ์ครอบคลุมไปยังผู้ใช้นอกเหนือจาก user และ group หรือเรียกว่า other ซึ่งในกลุ่มหลังนี้ให้ท่านจิตนาการเปรียบกับของใช้ที่เป็นสาธารณะ นั้นหมายถึงถ้ามีการกำหนดให้ other สามารถทำการใดๆ ได้แสดงว่าใครก็ได้ที่มีโอกาสเข้าถึงก็สามารถใช้งาน หรือ อ่าน-เขียนมันได้จึงต้องระวังเป็นพิเศษเมื่อกำหนดสิทธิ์ให้กับ other

ท่านสามารถตรวจสอบสิทธิ์ของ file ได้โดยใช้คำสั่ง ls ดังนี้

$ ls -l

total 8
drwxr-xr-x 2 mrchoke mrchoke 4096 2007-12-20 16:32 dir1
drwxr-xr-x 2 mrchoke mrchoke 4096 2007-12-20 16:32 dir2
-rw-r--r-- 1 mrchoke mrchoke 0 2007-12-20 16:32 file1
-rw-r--r-- 1 mrchoke mrchoke 0 2007-12-20 16:32 file2
-rw-r--r-- 1 mrchoke mrchoke 0 2007-12-20 16:32 file3
ชนิดและสิทธิ์   จำนวน link   เจ้าของ    กลุ่ม    ขนาด  เวลาที่แก้ไขล่าสุด      ชื่อ
| | | | | | |
-rw-r--r-- 1 mrchoke mrchoke 0 2007-12-20 16:32 file3

จากตัวอย่างด้านบนการแสดงสิทธิ์การเข้าถึงจะเป็น column ที่ 1 ซึ่งจะประกอบด้วยตัวอักษร 10 ตัวดังนี้

  • ตัวที่ 1 เป็นชนิดของ file
    • - เป็น file
    • d คือ Directory
    • l คือ Symlink
    • s คือ socket
    • p คือ pipe
    • c คือ character (unbuffered) device
    • b คือ block (buffered) device
  • ตัวที่ 2 - 4 เป็นสิทธิ์ของเจ้าของ (User,u)
    • r เจ้าของอ่านได้
    • w เจ้าของเขียน - ลบได้
    • x เจ้าของใช้งานได้
  • ตัวที่ 5 - 7 เป็นสิทธิ์ของกลุ่มผู้ใช้ (Group,g)
    • r กลุ่มเดียวกันอ่านได้
    • w กลุ่มเดียวกันเขียน - ลบได้
    • x กลุ่มเดียวกันใช้งานได้
  • ตัวที่ 8 - 10 เป็นสิทธิ์ของสาธารณะ (Other,o)
    • r สาธารณะอ่านได้
    • w สาธารณะเขียน - ลบได้
    • x สาธารณะใช้งานได้

ในส่วนของตัวที่ 2 - 10 นั้นท่านสามารถพบตัวอักษรได้ 5 แบบด้วยกัน คือ

  • r (อ่าน) จะพบได้เฉพาะตัวที่ 2,5 และ 8 เท่านั้น
  • w (เขียน-ลบ) จะพบได้เฉพาะตัวที่ 3,6 และ 9 เท่านั้น
  • x (ใช้งาน) จะพบได้เฉพาะตัวที่ 4,7 และ 10 เท่านั้น
  • s,S (SID) จะพบได้เฉพาะตัวที่ 4,7 และ 10 เท่านั้น
  • t,T (Sticky bit) จะพบได้เฉพาะตัวที่ 4,7 และ 10 เท่านั้น
  • - พบตัวนี้ที่ไหนแสดงว่าตัวนั้นปิด เช่นพบในตัวที่ 2 แสดงว่า เข้าของอ่านไม่ได้

เนื้อหา

[ซ่อน]

การกำหนดสิทธิ์ให้กับ file

กำหนดสิทธ์แบบง่ายๆ

อย่างที่กล่าวในข้างต้นว่าเราแบ่งการควบคุมออกเป็นสามกลุ่ม คือ

# User (Owner) , u
# Group , g
# Other , o

และขอเพิ่ม all , a เข้าไปอีกหนึ่งเพื่อใช้กำหนดในคำสั่ง

และ สิทธิ์ 3 แบบหลักๆ คือ

# r
# w
# x

ดังนั้นการกำหนดวิธีนี้เพียงแค่บอกว่าแต่ละกลุ่มจะตั้งค่า ลบค่า หรือ เพิ่มค่า อะไรลงไปดังนี้

$ chmod u+r filename : เพิ่ม r ให้ user
$ chmod g-x filename : ลบ x ใน group
$ chmod o=r filename : ให้ o เท่ากับ r--
$ chmod a=rx filename : ทุกกลุ่มเท่ากับ rx

ตัวอย่าง

-rw-r--r-- 1 mrchoke mrchoke    0 2007-12-20 16:32 file1

เมื่อกำหนดแบบต่างๆ จะได้ดังนี้

$ chmod u+x file1

-rwxr--r-- 1 mrchoke mrchoke 0 2007-12-20 16:32 file1
$ chmod g-r file1

-rwx---r-- 1 mrchoke mrchoke 0 2007-12-20 16:32 file1
$ chmod o=rwx file1

-rwx---rwx 1 mrchoke mrchoke 0 2007-12-20 16:32 file1
$ chmod uo-x,g+r file1

-rw-r--rw- 1 mrchoke mrchoke 0 2007-12-20 16:32 file1
$ chmod a=rw file1

-rw-rw-rw- 1 mrchoke mrchoke 0 2007-12-20 16:32 file1


กำหนดสิทธิ์โดยใช้เลขฐานแปด

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

เริ่มต้นโดยกำนหนดค่าของสิทธิ์ดังนี้

* r = 4
* w = 2
* x = 1
* - = 0

ถ้าต้องการกำหนด

rw-
ก็แค่เอา
4 + 2 + 0 = 6

พอจะนึกออกไหมครับ งั้นมาดูตัวอย่างอย่างกันเลย

ถ้าจะกำหนดค่าเท่ากับ  -rwxrwxrwx ก็จะได้ (4+2+1)(4+2+1)(4+2+1) = 777
$ chmod 777
ถ้าจะกำหนดค่าเท่ากับ  -r--r--r-- ก็จะได้ (4+0+0)(4+0+0)(4+0+0) = 444
$ chmod 444
ถ้าจะกำหนดค่าเท่ากับ  -rw-rw-rw- ก็จะได้ (4+2+0)(4+2+0)(4+2+0) = 666
$ chmod 666
ถ้าจะกำหนดค่าเท่ากับ  -rwxr-xr-x ก็จะได้ (4+2+1)(4+0+1)(4+0+1) = 755
$ chmod 755

ง่ายใช่ไหมครับงั้นเอาสรุปสูตรไปดังนี้

* --- = (0+0+0) = 0
* --x = (0+0+1) = 1
* -w- = (0+2+0) = 2
* -wx = (0+2+1) = 3
* r-- = (4+0+0) = 4
* r-x = (4+0+1) = 5
* rw- = (4+2+0) = 6
* rwx = (4+2+1) = 7

กำหนดค่าขั้นสูง

(Soon)

การประยุกต์ใช้เพื่อความปลอดภัย

อ่านได้ที่ http://www.thaicert.nectec.or.th/paper/unix_linux/file_permission.php

โพสต์ยอดนิยมจากบล็อกนี้

ปัญหาและเฉลยธรรม นักธรรมชั้นโท สอบในสนามหลวง พ.ศ. ๒๕๔๓ วันพฤหัสบดี ที่ ๑๖ พฤศจิกายน พ.ศ. ๒๕๔๓

ปัญหาและเฉลยวินัยบัญญัติ นักธรรมชั้นเอก สอบในสนามหลวง พ.ศ. ๒๕๔๓ วันเสาร์ ที่ ๑๘ พฤศจิกายน พ.ศ. ๒๕๔๓

ปัญหาและเฉลยวิชาธรรม นักธรรมชั้นโท สอบในสนามหลวง วันเสาร์ ที่ ๑๙ พฤศจิกายน พ.ศ. ๒๕๔๘