chmod
Linux Command – chmod ใช้ในการเปลี่ยนสิทธิ์ในการอ่าน, เขียน และ execute file หรือ folder แบ่งเป็นสิทธิ์ของ file owner, group owner, other user ซึ่งคำสั่งจะถูกแปลงจากเลขฐาน 8 ในการระบุสิทธิ์แต่ชนิด
คำสั่ง
เริ่มแรก file test มี permission ที่ owner user สามารถอ่านและเขียนได้แต่ execute ไม่ได้ ส่วน user ใน group เดียวกับ root ทำได้แค่อ่าน รวมถึง user อื่นๆในระบบก็ทำได้แค่อ่านเช่นกัน
$ ls -ltr test -rw-r--r-- 1 root root 0 May 7 00:22 test drwxr-xr-x 2 root root 4096 May 7 00:22 testdir $ ls -ltr testdir total 0 -rw-r--r-- 1 root root 0 May 7 00:22 test1 -rw-r--r-- 1 root root 0 May 7 00:22 test2
1. ทำการเปลี่ยนแปลงสิทธิ์ของ file
chmod <สิทธิ์เลขฐาน8> <file>
$ chmod 555 test $ ls -ltr test -r-xr-xr-x 1 root root 0 May 7 00:22 test $ chmod 755 test $ ls -ltr test -rwxr-xr-x 1 root root 0 May 7 00:22 test $ chmod 777 test $ ls -ltr test -rwxrwxrwx 1 root root 0 May 7 00:22 test $ chmod 700 test $ ls -ltr test -rwx------ 1 root root 0 May 7 00:22 test
2. ทำการเปลี่ยนแปลงสิทธิ์ของทั้ง directory
chmod -R <สิทธิ์เลขฐาน8> <directory>
$ chmod -R 777 testdir $ ls -ltr drwxrwxrwx 2 root root 4096 May 7 00:22 testdir $ ls -ltr testdir total 0 -rwxrwxrwx 1 root root 0 May 7 00:22 test1 -rwxrwxrwx 1 root root 0 May 7 00:22 test2
โครงสร้างคำสั่ง
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
รายละเอียด
เป็นคำสั่งใช้ในการเปลี่ยนสิทธิ์ในการเข้าถึง file แบ่งดังนี้ drwxrwxrwx ยกเว้น user root ที่มีสิทธิ์เข้าถึง file หรือ directory ไหนก็ได้ เพราะถือเป็น super user ของ ระบบ
- – คือ ไม่มีสิทธิ์
- r คือ read
- w คือ write
- x คือ execute
- d คือ directory
- l คือ symbolic link
ส่วนกลุ่มของ user แบ่งดังนี้
- bit 1 คือ -,d,l หมายถึงชนิดของข้อมูล file(-), directory(d), l (link)
- bit 2-4 คือ rwx สำหรับบอกสิทธิ์ของ file owner
- bit 5-7 คือ rwx สำหรับบอกสิทธิ์ของ group owner
- bit 8-10 คือ rwx สำหรับบอกสิทธิ์ของ user อื่นๆ
วิธีการแปลง bit เพื่อใช้ในการ chmod คือ string “-” มีค่าเท่ากับ 0 นอกจากนั้น มีค่าเท่ากับ 1 และให้นับตั้งแต่ bit ที่ 2 เป็นต้นไปเช่น
-rwxr-xr-x แปลงเป็นเป็นเลขฐาน 2 ได้ 111101101 และแปลงเป็นเลขฐาน 8 ได้ 755
Option
-c, --changes like verbose but report only when a change is made -f, --silent, --quiet suppress most error messages -v, --verbose output a diagnostic for every file processed --no-preserve-root do not treat '/' specially (the default) --preserve-root fail to operate recursively on '/' --reference=RFILE use RFILE's mode instead of MODE values -R, --recursive change files and directories recursively --help display this help and exit --version output version information and exit Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'.
กลุ่มคำสั่ง
chmod
Reference:
Author: Suphakit Annoppornchai
Credit: https://saixiii.com
[…] locatedb(5), updatedb(1), xargs(1), chmod(1), fnmatch(3), regex(7), stat(2), lstat(2), ls(1), printf(3), strftime(3), […]
[…] permission ก่อนด้วยคำสั่ง chmod เพื่อให้เราสามารถ execute shell script […]