Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีเปลี่ยนสิทธิ์ไฟล์แบบ Recursive ใน Linux

วิธีเปลี่ยนสิทธิ์ไฟล์แบบ Recursive ใน Linux

เนื่องจาก Linux เป็น multi-user operating system จึงมี mechanism ตั้งค่าและจัดการ file permissions เพื่อให้เฉพาะ authorized processes และ users เข้าถึง directories และ files ได้ ขณะใช้ Linux อาจเจอ "Permission denied" error บ่งชี้ว่าไม่มี privileges ที่จำเป็น Tutorial นี้แสดงวิธีเปลี่ยนสิทธิ์ไฟล์แบบ recursive ใน Linux เพื่อให้ permission settings ใช้กับ sub-folders และ files ด้วย

วิธีตรวจสอบ file permission(s) ใน Linux

เมื่อ "permission denied" error เกิดขึ้นบน file หรือ directory operation เริ่มด้วยการตรวจสอบ permissions ที่จัดสรรให้ user, group และ other

ใช้คำสั่ง ls -l ตัวอย่าง permissions ของไฟล์และ directories ใน "/var":

วิธีเปลี่ยนสิทธิ์ไฟล์แบบ Recursive ใน Linux

Output ข้างต้นมีข้อมูลเฉพาะ:

  1. คอลัมน์แรก: file และ directory permissions ตัวอักษรแรกบ่งชี้ type: d = directory, l = symbolic link, - = regular file
  2. ตัวอักษร 9 ตัวถัดไป จัดเป็น 3 กลุ่ม: u user, g group, o owner แสดง file/directory permissions r = read, w = write, x = execute
วิธีเปลี่ยนสิทธิ์ไฟล์แบบ Recursive ใน Linux

รู้ file permissions แล้ว เปลี่ยนได้ง่าย

วิธีใช้ chmod เปลี่ยน file permissions

คำสั่ง chmod เป็นวิธีง่ายที่สุดสำหรับเปลี่ยน file permissions ใน Linux Syntax ทั่วไป:

chmod {permission}{operator}{mode}
  • Permission: สิทธิ์ที่ให้กับ user, group, owner, หรือ all
  • Operator: บ่งชี้สิทธิ์ให้ assignee: + ให้สิทธิ์, - ปฏิเสธสิทธิ์, = ระบุสิทธิ์ที่ตั้งค่า
  • Mode: กำหนดสิทธิ์ที่ตั้งค่า: r read, w write, x execute

ตัวอย่าง ปฏิเสธทุกคน write access ไปที่ backup directory ใน "/var":

sudo chmod -w /var/backups

แม้ chmod จะมีประสิทธิภาพ แต่เปลี่ยน permissions เฉพาะ directory หรือ file ที่ระบุเท่านั้น

โชคดีที่สามารถเปลี่ยน permissions แบบ recursive ของ directory/file และ sub-directories/files ได้ ใช้ chmod recursive -r option

ตัวอย่าง ลบ read permissions แบบ recursive สำหรับ "/var/backup" และทุกไฟล์/ subdirectories permissions ปัจจุบัน:

drwxrwxrwx 2 root root 4096 Jul 15 06:25 backups

รัน chmod recursive:

sudo chmod -r -r /var/backups

ตอนนี้เห็น permissions เปลี่ยนไปแล้ว

วิธีเปลี่ยนสิทธิ์ไฟล์แบบ Recursive ใน Linux

Recursive change permission ด้วย find

ปกติจะไม่ set files และ directories ด้วย permissions เหมือนกัน เพราะต้องการ execute permission เพื่อ cd เข้า directory แต่ไฟล์ส่วนใหญ่ไม่ต้องการ execute permission

แก้ด้วย find utility ใน Linux ให้หาเฉพาะ files หรือ directories และ set permissions บนพวกมัน

ใช้ directory "/var/log" ซึ่งมีทั้ง files และ directories

วิธีเปลี่ยนสิทธิ์ไฟล์แบบ Recursive ใน Linux

ตั้ง permissions เฉพาะ files ใช้ find command ด้วย -type f option

ตัวอย่างคำสั่ง:

sudo find /var/log/ -type f -exec chmod 777 {} \;

ในตัวอย่าง ใช้ find ค้นหา "/var/log" สำหรับ files แล้ว set read, write, execute permissions ให้ users, groups และ all

ทำได้เหมือนกันสำหรับ directories ระบุ -type d เพื่อหาเฉพาะ directories

ตัวอย่าง:

sudo find /var/log/ -type d -exec chmod 755 {} \;

ในตัวอย่าง ตั้ง permission 755 ให้ directories เท่านั้น ไม่ใช่ทั้ง files และ directories

ตรวจสอบได้ด้วย ls -la

วิธีเปลี่ยนสิทธิ์ไฟล์แบบ Recursive ใน Linux

จะเห็น files ทั้งหมด permission 777 ส่วน directories เป็น 755

สรุป

การรู้วิธีเปลี่ยน file permissions ใน Linux เป็น essential skill ช่วยป้องกัน unauthorized access และ modifications ไฟล์และ directories นอกจากนี้ สามารถเปลี่ยน file ownership เพื่อจำกัดการเข้าถึง หรือใช้ access control list สำหรับการควบคุมละเอียดกว่านี้