2 พฤศจิกายน 2553

Permission

ทำไมต้อง Permission
CHMOD หรือ ค่า Permission คือ ค่าของความมีสิทธิ์ในการเข้าถึงและใช้งาน File หรือ Directory นั้น ๆ
ซึ่งจะมีค่าต่าง ๆ แบ่งเป็นตัวเลข 3 หลัก เช่น 644, 755, 777 ซึ่งมีความหมายดังนี้
chmod
Execute คือ การสั่งให้ทำงาน Write คือ การเขียน File หรือ Directory Read คือ การอ่าน File หรือ Directory




เลขในหลักแรก เจ้าของ Files / Directory (Owner)

ตัวเลขในหลักแรก แสดงถึงสิทธิ์ในการเข้าถึงไฟล์ของผู้เป็นเจ้าของ Files หรือ Directory นั้น ๆ กรณีที่ตัวเลขหลักแรกเป็นเลข
4 หมายถึง เจ้าของ (Owner) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน เพียงอย่างเดียวแต่ไม่มีสิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น
6 หมายถึง เจ้าของ (Owner) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน และมีสิทธิ์ในการเขียนไฟล์นั้นเพียงอย่างเดียว แต่ไม่มีสิทธิ์อ่านไฟล์นั้น (4+2)
7 หมายถึง เจ้าของ (Owner) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน และมีสิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น (4+2+1)
(ดูค่าตามตาราง ประกอบ)

เลขในหลักที่สอง ผู้ใช้กลุ่มเดียวกับเจ้าของ Files / Directory (Group)

ตัวเลขในหลักแรก แสดงถึงสิทธิ์ในการเข้าถึงไฟล์ของผู้เป็นเจ้าของ Files หรือ Directory นั้น ๆ กรณีที่ตัวเลขหลักที่สองเป็นเลข
4 หมายถึง ผู้ใช้ในกลุ่มเดียวกับเจ้าของ (Group) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน เพียงอย่างเดียวแต่ไม่มี สิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น
6 หมายถึง ผู้ใช้ในกลุ่มเดียวกับเจ้าของ (Group) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงานและมี สิทธิ์ในการเขียนไฟล์นั้นเพียงอย่างเดียวแต่ไม่มี สิทธิ์อ่านไฟล์นั้น (4+2)
7 หมายถึง ผู้ใช้ในกลุ่มเดียวกับเจ้าของ (Group) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงานและมี สิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น (4+2+1) (ดูค่าตามตาราง ประกอบ)

เลขในหลักที่สาม ผู้ใช้อื่น ๆ (Others / Puplic)

ตัวเลขในหลักแรก แสดงถึงสิทธิ์ในการเข้าถึงไฟล์ของผู้เป็นเจ้าของ Files หรือ Directory นั้น ๆ กรณีที่ตัวเลขหลักที่สามเป็นเลข
4 หมายถึง ผู้ใช้อื่น ๆ (Others / Puplic) มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน เพียงอย่างเดียวแต่ไม่มีสิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น
6 หมายถึง ผู้ใช้อื่น ๆ (Others / Puplic) มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน และมีสิทธิ์ในการเขียนไฟล์นั้นเพียงอย่างเดียว แต่ไม่มีสิทธิ์อ่านไฟล์นั้น (4+2)
7 หมายถึง ผู้ใช้อื่น ๆ (Others / Puplic) มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน และมีสิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น (4+2+1)
(ดูค่าตามตาราง ประกอบ)

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

ข้อมูลด้านบนจาก http://www.thaitumweb.com/howto/CaptureControlpanel/UserLevel/YourAccount/Permission.html
หลาย ๆ ท่านติดปัญหาอันเนื่องมาจากการไม่กำหนดค่า permission สำหรับไดเรกทอรี่ต่าง ๆ ก่อนที่จะใช้งานหรือติดตั้ง extension เสริม ต่าง ๆ ทำให้เกิด error ขึ้นหลาย ๆ อย่าง เช่น
permission

warning failed to move file เกิดจาก permission ไดเรกทอรี่ /tmp

module

รูปบนก็ไดเรกทอรี่ /modules ไม่สามารถเขียนได้(บันทึก)

permission

รูปด้านบนก็ไม่สามารถบันทึกไฟล์ภาษาได้ permission ไดเรกทอรี่ /language แล้ไดเรกทอรี่ย่อยภายในด้วย

ปลั๊กอิน

รูปบนก็เป็น permission ไดเรกทอรี่ plugin

แล้วควรจะแก้ไขหรือกำหนดค่า permission แค่ไหนอย่างไร ก่อนอื่นมาดูว่า joomla ต้องการค่า permission chmod 777 ไดเรทอรี่ไหนบ้าง
โดยเข้าที่ เมนู help >> system info
system info

เข้าแท็บเมนู Directory permission

Directory permission

ดูอันไหนขึ้นตัวหนังสือสีแดงว่า Unwritable บ้างก็จัดการเปลี่ยนค่า permission เป็น chmod 777

ไดเรกทอรี่หลัก ๆ ก็จะมี
ไดเรกทอรี่ permission
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
administrator/backups/
administrator/components/
administrator/language/
administrator/language/en-GB/
administrator/modules/
administrator/templates/
components/
images/
images/banners/
images/stories/
language/
language/en-GB/
language/pdf_fonts/
media/
modules/
plugins/
plugins/content/
plugins/editors/
plugins/editors-xtd/
plugins/search/
plugins/system/
plugins/user/
plugins/xmlrpc/
templates/ Writable
/cache
/administrator/cache/
/logs/
/tmp/
เปลี่ยนเป็นค่า chmod 777 ทั้งหมดเลยครับตามรายชื่อไดเรกทอรี่ด้านบน
ถาม::แล้วต้องเปลี่ยนกลับคืนไหม?
ตอบ::ไม่ต้องครับ
ถาม::แล้วจะปลอดภัยไหม
ตอบ::เปลี่ยนค่า chmod 777 เฉพาะไดเรกทอรี่เท่านั้นครับตามรายชื่อไดเรกทอรี่ด้านบน ส่วนไฟล์หรือไดเรกทอรี่อื่น ก็คงค่าเดิมไว้หรือเปลี่ยนเป็น chmod 644 หรือ 755
เมื่อเปลี่ยนเสร็จแล้วก็กลับมาดูค่า permission อีกทีว่าขึ้นเป็นสีเขียวหรือไม่ writable
permission

เปลี่ยนค่า permission แล้วในโปรแกรม FTP แล้ว มาดูอีกที ค่า permission ก็ยังเหมือนเดิมทำอย่างไรดี ?
อาจจะเป็นเพราะมียูสอื่น ครองสิทธิไฟล์หรือไดเรกทอรี่นั้นอยู่ วิธีแก้ไข คือล็อคอินเข้า control panel ของ host จะมีเครื่องมือสำหรับปลดล็อคอยู่ครับ
ตัวอย่างเช่น control panel directadmin
file manager

เข้าที่ file manager


จะเห็นได้ว่า acache นั้นเป็น owner อยู่

reset owner

คลิ๊กเลือกที่ไฟล์หรือไดเรกทอรี่ จากนั้นกด reset owner
ส่วน control panel อื่น ๆ ชื่อเครื่องมืออาจจะแตกต่างกันบ้าง แต่ก็มีตัว reset owner ให้เกือบทั้งหมดครับ

ไม่มีความคิดเห็น: