17 ตุลาคม 2548

POSIX EAs & ACLs ตอนที่ 1

    เมื่ออาทิตย์ก่อน ท่าน ผจก.ฝ่าย อยากจะกำหนดสิทธิ์ในการใช้งานแฟ้มบนเซิร์ฟเวอร์ให้รัดกุม โดยต้องการจะแยกแยะสิทธิ์ในการอ่าน, การเขียน และการประมวลผลแฟ้มและไดเรกทอรีอย่างชัดเจน โดยจะทำให้กำหนดสิทธิ์ให้กับผู้ใช้หรือกลุ่มแยกรายตัวหรือรายกลุ่มกันเลยทีเดียว จึงได้มอบหมายให้ผมทำการปรับแต่งสิทธิ์ในการใช้งานแฟ้มบนเซิร์ฟเวอร์ให้เป็นไปตามข้อกำหนด เอาล่ะสิครับ เคยรู้จักแต่การกำหนดสิทธิ์แบบเดิม ๆ ที่เรารู้จักกันในเรื่องการตั้งค่าสิทธิ์ที่อนุญาตหรือ Permissions โดยใช้คำสั่ง chmod ยอดนิยม :p

    แล้วจะทำไงดีหว่า ?

    ว่าแล้วก็ต้องอ่านคู่มือ Admin ที่ติดมากับ SUSE Linux OSS ก่อนละ แล้วก็มาสะดุดกับหัวข้อ POSIX ACLs ซึ่งเป็นเรื่องของการกำหนดสิทธิ์อนุญาตที่พิเศษและเหนือกว่าคำสั่ง chmod อ่าน ๆ ไป แล้วก็ค้นกูเกิ้ลต่อ ก็เลยเอามาสรุปไว้ที่นี่แหละ ;-)

ทบทวนเรื่องสิทธิ์ที่อนุญาตหรือ Permission


    หลาย ๆ ท่านคงคุ้นเคยกับการตั้งค่าสิทธิ์ที่อนุญาตหรือ Permission ที่ใช้กำหนดการเข้าใช้งานไดเรกทอรีและแฟ้มต่าง ๆ บนระบบยูนิกซ์รวมไปถึงระบบคล้ายยูนิกซ์เช่นลินุกซ์กันดีอยู่แล้ว โดยการตั้งค่าสิทธิ์ที่อนุญาตนี้ เราจะกระทำผ่านคำสั่ง chmod (change file access permissions) ซึ่งจะสามารถกำหนดระดับการเข้าถึงได้ 3 ระดับ นั่นคือ


  • การอ่าน (read - แฟล็ก r)

  • การเขียน (write - แฟล็ก w) และ

  • การประมวลผล (execute - แฟล็ก x) หากใช้กับไดเรกทอรีจะเป็นการอนุญาตให้เข้าใช้งานไดเรกทอรีได้


    จากระดับการเข้าถึงทั้ง 3 นั้น ยังใช้กำหนดแยกให้กับระดับผู้ใช้อีก 3 ระดับ นั่นคือ


  • เจ้าของแฟ้ม/ไดเรกทอรี (File Owner)

  • กลุ่มผู้ใช้ (Group) และ

  • ผู้ใช้อื่น (Other users)


    ลองดูผลลัพธ์ที่ได้จากคำสั่ง ls
เพื่อทบทวนกันสักหน่อยดีกว่า

donga@linux:~> ls -l Documents/KDE-SVN/th/messages
total 21
-rw-r--r-- 1 donga users 104 2005-09-29 21:17 flag.png
drwxr-xr-x 3 donga users 208 2005-10-05 21:48 kdeaccessibility
...

   
จากผลลัพธ์เราสามารถแบ่งกลุ่มตัวอักษรที่คอลัมน์แรกออกเป็น 4 กลุ่มด้วยกัน
โดยประกอบด้วย















-rw-r--r--
























อักษรตัวที่ 1ใช้บ่งบอกถึงประเภทของแฟ้ม
อักษรตัวที่ 2-4ใช้แสดงสิทธิ์ที่เจ้าของแฟ้ม/ไดเรกทอรีมีต่อแฟ้ม/ไดเรกทอรีนั้น
อักษรตัวที่ 5-7ใช้แสดงสิทธิ์ที่กลุ่มที่เป็นกลุ่มเดียวกันกับเจ้าของแฟ้ม/ไดเรกทอรีมีต่อแฟ้ม/ไดเรกทอรีนั้น
อักษรตัวที่ 8-10ใช้แสดงสิทธิ์ที่ผู้ใช้อื่น ๆ
มีต่อแฟ้ม/ไดเรกทอรีนั้น




    สำหรับความหมายของตัวอักษรตัวแรกก็มีความหมายคือ


-      หมายถึง เป็นแฟ้มปรกติ

d      หมายถึง เป็นไดเรกทอรี

c      หมายถึง เป็นแฟ้มแบบดีไวซ์ Character I/O

b      หมายถึง เป็นแฟ้มแบบดีไวซ์ Block I/O

l       หมายถึง เป็นแฟ้มแบบเชื่อมโยง (symbolic link)

s      หมายถึง เป็นแฟ้มแบบซ็อกเก็ต (socket file)

p      หมายถึง เป็นแฟ้มแบบ FIFO




    สำหรับบิตพิเศษเพิ่มเติม และการใช้งานคำสั่ง chmod ผมไม่ขอกล่าวถึงละกัน ให้ไปทบทวนดูกันเอาเองนะครับ ที่

   
http://thaicert.nectec.or.th/paper/unix_linux/file_permission.php



    เอาละครับ ถึงตอนนี้จะเห็นว่า
เราสามารถที่จะกำหนดสิทธิ์ที่อนุญาตในการใช้งานแฟ้ม/ไดเรกทอรี
ให้กับผู้ใช้ในระดับต่าง ๆ ตั้งแต่ กำหนดสิทธิ์ให้กับตัวเจ้าของแฟ้มเอง,
กำหนดให้ผู้ใช้ที่อยู่ในกลุ่มเดียวกันกับเจ้าของแฟ้ม
และกำหนดให้กับผู้ใช้อื่น ๆ ซึ่งก็น่าจะเพียงพอ
และไม่น่าจะเป็นปัญหาแต่อย่างใดหากเป็นการใช้งานแฟ้มและไดเรกทอรีในระดับปรกติธรรมดา
แต่ในบางกรณี ถ้าเราต้องการระบุสิทธิ์การอนุญาตที่ซับซ้อนกว่านี้ล่ะ
จะทำอย่างไร ยกตัวอย่างกรณีต่าง ๆ เช่น


  • ต้องการให้เฉพาะผู้ใช้ชื่อ joe ซึ่งอยู่ในกลุ่มผู้ใช้ชื่อ users
    สามารถทำการอ่าน, เขียน และประมวลผลแฟ้มของเราได้เพียงคนเดียว
    แต่ไม่ให้ผู้ใช้อื่น ๆ ในกลุ่ม users มีสิทธิ์อ่าน, เขียน
    และประมวลผลแฟ้มของเราได้


  • เจ้าของแฟ้มเป็นผู้ใช้ในกลุ่ม marketing แต่ต้องการให้ผู้ใช้ซึ่งอยู่ในกลุ่มผู้ใช้ที่ชื่อ account สามารถทำการอ่านและเขียนแฟ้มได้เพียงกลุ่มเดียวเท่านั้น

  • ต้องการให้สามารถกำหนดสิทธิ์ผ่านระบบวินโดว์ส 2000 , XP หรือ 2003
    ตามรูปแบบสิทธิ์ที่กำหนดได้บนระบบวินโดว์สดังกล่าว (คือสามารถกำหนดแยกย่อยว่าจะอนุญาตเป็นราย ๆ ทั้งรายผู้ใช้ หรือรายกลุ่มได้)

  • ฯลฯ



    ฝากไว้ให้คิดเป็นการบ้านก่อน เดี๋ยวมาต่อตอนหน้าครับ
(ที่จริงเมื่อยพิมพ์ กะเมื่อยจัดหน้าอ่ะ :-P )

    อ้อ ต้องเตรียมลง Win2000 Evaluate บน QEMU
เพื่อทดสอบด้วย
:-P




ข้อมูลอ้างอิง: http://acl.bestbits.at/about.html

3 ความคิดเห็น:

donga กล่าวว่า...

ตอนที่ 1 , ตอนที่ 2 , ...

คุ้น ๆ เหมือนเคยเห็นที่บล็อกคุณพูนลาภ อ่าวใช่...
อ่านบล็อกท่านอื่น ๆ มาก ๆ เข้าชักเริ่มลอกหัวข้อซะและเรา :P

ไม่ระบุชื่อ กล่าวว่า...

Enjoyed a lot!
»

ไม่ระบุชื่อ กล่าวว่า...

That's a great story. Waiting for more. » » »