แล้วจะทำไงดีหว่า ?
ว่าแล้วก็ต้องอ่านคู่มือ 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
3 ความคิดเห็น:
ตอนที่ 1 , ตอนที่ 2 , ...
คุ้น ๆ เหมือนเคยเห็นที่บล็อกคุณพูนลาภ อ่าวใช่...
อ่านบล็อกท่านอื่น ๆ มาก ๆ เข้าชักเริ่มลอกหัวข้อซะและเรา :P
Enjoyed a lot!
»
That's a great story. Waiting for more. » » »
แสดงความคิดเห็น