ทำไมต้อง 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 ผ่านโปรแกรม FTP

ไดเรกทอรี่หลัก ๆ ก็จะมี

ไดเรกทอรี่ 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 ให้เกือบทั้งหมดครับ