linux- permission commands

Permission คือ สิทธิ์ในการเข้าถึง Files หรือ Directories ภายในระบบปฏิบัติการ Unix โดยแบ่งออกได้เป็น 3 กลุ่มของผู้ใช้


chmod 777 file.php

คำสั่งด้านบนนี้เชื่อว่า 80% ที่อ่านบทความนี้น่าจะรู้ความหมายของมันแล้วว่า 
เป็นการให้สิทธิ์กับ User ที่เป็นเจ้าของ File  |  Group ที่เป็นเจ้าของ File   |  Other คนอื่นๆ

User ที่เป็นเจ้าของ File  |  Group ที่เป็นเจ้าของ File   |  Other คนอื่นๆ
7 ตำแหน่งที่ 1                |       7  แหน่งที่ 2                 |   7 ตำแหน่งตัวที่ 3 

แล้ว 7 คืออะไร  มาจากไหน

คำตอบคือมาจากผลรวม
ของการ + เลข 3 ตัวแค่นั้นเอง

Octal Symbol         Permission
0 ---                        No Permissions
1 --x                               Execute
2 -w-                                Write
4 r--                                  Read






ยกตัวอย่างกันอีกรอบ

chmod 755 file.php

ความหมายของเลข 755 ก็คือ 

ตัวเลข  ที่บอกถึงสิทธิ์การเข้าถึง ของไฟล์ file.php

7 ตัว แรก คือสิทธิ์ของเจ้าของไฟล์ = จะ อ่าน , เขียน , รันไฟล์  ได้
5 ตัวที่ สอง คือสิทธิ์ของคือสิทธิ์ของ สมาชิกที่อยู่ Group เดียวกับเจ้าของ File:  จะอ่าน , รันไฟล์ ได้  
5 ตัวที่ สาม  คือสิทธิ์ของ User ทั่วไป  จะอ่าน , รันไฟล์ ได้

img : https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAjhyphenhyphenqa8HsgdNM2V9h4e1T4hPEJDFaO-PXIGfxIiyo7W-jDmV4wH0vWhXx89kZUu6plDyAfyXjzaxBV23xR40zISQzTHgKStUA8Uvda6lNWMPbiB8mFJ9h-wzFC-KDWSKDh2-o_hZQhAE/s1600/chmod4.png



" เทคนิคง่ายๆคือเลขจำเลข 421 
  และประโยค read , write , execute ให้ได้
  ก็จะสามารถใช้งานคำสั่ง chmod ได้แล้วครับ !!
 "



โดยปกติที่เราใช้คำสั่ง ls -l เพื่อแสดงรายละเอียดไฟล์และ Directory

root@ak1:~$ ls -l
total 870908
-rw-rw-r--  1 ak1  ak1     169182 ม.ค.  29 13:45 image.jpg
-rw-rw-r--  1 ak1  ak1  890964337 ก.พ.   2 19:40 hello.zip
drwxrwxr-x  4 ak1  ak1       4096 ก.พ.   2 13:52 burpsuite
drwxr-xr-x  2 ak1  ak1       4096 มี.ค.  31  2010 cmsexplorer
drwxrwxr-x  4 ak1  ak1       4096 ธ.ค.  27 20:30 coding
drwxr-xr-x  2 ak1  ak1     405504 ม.ค.  31 20:54 crunch


อ่าน Permisstion แบบตัวเลขด้วยคำสั่ง stat


$stat -c '%A %a %n' *

ช่วยให้สามารถอ่านค่าของ permission ได้ง่ายขึ้น
ด้วยคำสั่ง stat : display file or file system status
ตามด้วย -c ช่วยทำการขึ้นบรรทัดใหม่ให้อ่านง่ายขึ้น

%A จะแสดงค่าในรูปแบบอักษร drwxr-xr-x
%a จะแสดงค่าในรูปแบบตัวเลข 777
%n จะแสดง File name


Example
root@ak1:~$ stat -c '%A %a %n' *
-rw-rw-r-- 664 image.jpg
-rw-rw-r-- 664 hello.zip
drwxrwxr-x 775 burpsuite
drwxr-xr-x 755 cmsexplorer
drwxrwxr-x 775 coding
drwxr-xr-x 755 crunch





ความต่างเรื่อง permissionระหว่าง File กับ Directory

4   =  r  (read)
2   =  w (write)
1   =  x (execute)


สิทธิในฝั่งไฟล์
Read permission     อนุญาติให้ file สามารถเปิดได้
Write permission     อนุญาติให้ file สามารถแก้ไขได้
Execute permission อนุญาติให้ file สามารถทำงานโดยตรงจาก shell ถ้าเป็น script หรือ binary file


เมื่อนำไปใช้กับ Directory (folder)
Read permission      อนุญาติให้ directory สามารถแสดงลิสต์ภายในได้
Write permission      อนุญาติให้ files หรือ directories สามารถถูกสร้างหรือลบภายใน directory
Execute permission  อนุญาติให้ข้อมูลใน directory สามารถเข้าถึงได้





วิธีการใช้คำสั่ง chmod เพื่อปรับเปลี่ยนสิทธิ
แบบ Octal values (ตัวเลขฐานแปด)

$ chmod 700 folder


เมื่อเราใช้คำสั่ง ls -l
output :   -rwx------         1   olan   group1   346   Apr   27 03:32   folder


ทบทวน
ตัวแรก 7 เป็นการกำหนด permission ให้ user เป็น rwx
ตัวแรก 0 เป็นการกำหนด permission ให้ group เป็น ---
ตัวแรก 0 เป็นการกำหนด permission ให้ other เป็น ---

ถ้าต้องการเปลี่ยนแปลง Permission ทั้งหมดใน Directory ปัจจุบัน
และ sub directories ทั้งหมด สามารถใช้คำสั่ง


$chmod -R u+r {folder}




คำสั่ง umask - $umask 022


ใช้สำหรับตั้งค่าเมื่อมีการสร้าง files หรือ directories ใหม่
จะมีค่าตามที่กำหนดในคำสั่ง umask
หลังจากเรียกใช้คำสั่ง umask 022 แล้ว file หรือ directories ที่สร้างใหม่
จะมี permission เป็น 022 เสมอ




คำสั่ง chown 

ใช้สำหรับการเปลี่ยนแปลง Owner (เจ้าของไฟล์ , Directory)
$chown north contact_info




คำสั่ง chgrp 

ใช้ในการเปลี่ยน group

$ chgrp students data_file
$ ls -l data_file


: output :
-rwxrwx---  1   north   students   812   Jan   27 11:20   data_file






Reference :
http://askubuntu.com/questions/152001/how-can-i-get-octal-file-permissions-from-command-line
http://share.olanlab.com/th/it/blog/view/89