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

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

ปัญหาและเฉลยวิชาธรรม นักธรรมชั้นตรี สอบในสนามหลวง วันอังคาร ที่ ๒๙ กันยายน พ.ศ.๒๕๕๒

I miss you all กับ I miss all of you ต่างกันอย่างไร

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