ไม่เข้าใจ function Open BaseDir ครับ ช่วยหน่อยครับว่าจะ ติดตั้ง เช็ตค่ายังไง

พอดี ผม Create User ให้ พนักงานที่นี่แล้ว ไม่ต้องการให้เขาเข้าไปใช้งานหรืออ่านข้อมูลส่วนอื่นๆ ได้นอกจากส่วนของเขาเอง

ผมต้องทำอย่างไรบ้างครับ มีคนแนะนำว่าใช้ Open BaseDir แต่ผมมะเข้าใจวิธีติดตั้ง และ ใช้งานครับ

ปกติ ... ผมจะกำหนด Permission ครับ

# cd /home
# ls -l
drwxr-xr-x 88 neutron     neutron      4096 2008-06-18 21:16 neutron
drwxr-xr-x  5 other       other        4096 2008-04-26 10:51 other
                ^           ^
                |           |
                |           [---------- Group Name
                [--- Owner Name 

โดยกลุ่มตัวอักษรหน้าสุด จะบ่งบอกถึงสิทธิในการเข้าถึง Directory หรือ ไฟล์ ดังนี้

[-------------- Directory (d) หรือ file (-)
| [------------ สิทธิ์ในการเข้าใช้งานสำหรับ ผู้ใช้ที่เป็นเจ้าของแฟ้ม หรือผู้สร้างแฟ้ม (Owner)
| |  [--------- สิทธิ์ในการเข้าใช้งานสำหรับ ผู้ใช้ที่อยู่ในกลุ่ม (Group) ที่กำหนดไว้ตาม Group Name ของแฟ้ม
| |  |  [------ สิทธิ์ในการเข้าใช้งานสำหรับ ผู้ใช้อื่น ๆ ที่ไม่ได้เป็น Owner และไม่ได้อยู่ใน Group เดียวกัน
v v  v  v
drwxr-xr-x

โดยสิทธิ์ที่เป็นตัวอักษร

 
r = readable   -- file สามารถอ่านข้อมูลในแฟ้มได้
               -- directory สามารถสั่งให้แสดงรายการแฟ้ม หรือ Directory ได้ (ls)
w = writable   -- file สามารถเขียนข้อมูลลงในแฟ้มได้ 
               -- directory สามารถสร้างไฟล์ข้างในใน directory นั้นได้
x = executable -- file สามารถสั่งให้ binary file หรือ script ทำงานได้ (run program)
               -- directory สามารถอ้างอิงและใช้งานข้อมูลใน directory ได้

เช่น หากต้องการให้ผู้ที่เป็นเจ้าของ (Owner) สามารถเข้าใช้งานได้ ผู้ใช้อื่น ๆ ไม่มีสิทธิ์เข้าถึงข้อมูลที่ไม่ใช่ของตัวเอง

# cd /home
# chmod u+rwx,g-rwx,o-rwx -R neutron
    ^     ^     ^     ^    ^    ^
    |     |     |     |    |    [-------- ชื่อ directory หรือ file
    |     |     |     |    [------------- Option -R (Recursive) หมายถึง การกำหนดสิทธิ์จะมีผลกับทุก directory
    |     |     |     |                                         หรือแฟ้ม ทั้งหมดที่อยู่ภายใน directory ที่กำหนด 
    |     |     |     [------------------ o[+/-]r[+/-]w[+/-]x  --> Other
    |     |     [------------------------ g[+/-]r[+/-]w[+/-]x  --> Group
    |     [------------------------------ u[+/-]r[+/-]w[+/-]x  --> User (Owner)
    [------------------------------------ คำสั่งสำหรับเปลี่ยนสิทธิ์การเข้าใช้งาน directory หรือ file

ผลที่ได้คือ

# cd /home
# ls -l
drwx------ 88 neutron     neutron      4096 2008-06-18 21:16 neutron
drwxr-xr-x  5 other       other        4096 2008-04-26 10:51 other 

ผู้ใช้อื่น ๆ ที่ไม่ใช่ neutron จะไม่สามารถเข้าไปใน /home/neutron ได้เลย และไม่สามารถจะเรียกข้อมูลใด ๆ ใน neutron แม้จะทราบตำแหน่งของแฟ้มก็ตาม

หากต้องการกำหนดให้กับ ทุก directory ใน /home สามารถทำได้ดังนี้

# cd /home
# find -type d | grep "./" | xargs chmod u+rwx,g-rwx,o-rwx -R

ผลที่ได้คือ

# cd /home
# ls -l
drwx------ 88 neutron     neutron      4096 2008-06-18 21:16 neutron
drwx------  5 other       other        4096 2008-04-26 10:51 other 

ส่วนที่อื่น ๆ ของระบบ จะถูกกำหนดสิทธิ์ต่าง ๆ ไว้แล้วโดยระบบเอง แต่หากต้องการกำหนดสิทธิ์ใหม่
ก็สามารถกำหนดได้ตามวิธีข้างต้น

ปล. สำหรับ open_basedir ผมไม่ชัดเจนว่าคือ การกระทำเช่นไร แต่ชื่อมันคุ้น ๆ เหมือนเคยเห็นใน PHP

___
Neutron: Linux Addict!

ขอบคุณมากครับ

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้