เนื่องจาก Linux เป็นระบบปฏิบัติการที่มีผู้ใช้หลายคน จึงมีกลไกที่ตั้งค่าและจัดการสิทธิ์ของไฟล์เพื่อให้แน่ใจว่ามีเพียงกระบวนการที่ได้รับอนุญาตและผู้ใช้เท่านั้นที่สามารถเข้าถึงไดเร็กทอรีและไฟล์ต่างๆ เมื่อคุณใช้ Linux คุณอาจพบกรณีต่างๆ ที่คุณไม่สามารถแก้ไขไฟล์หรือไดเร็กทอรีได้เนื่องจากข้อผิดพลาด "การอนุญาตถูกปฏิเสธ" ซึ่งแสดงว่าคุณไม่มีสิทธิ์ที่จำเป็น บทแนะนำนี้จะแสดงวิธีเปลี่ยนการอนุญาตไฟล์แบบเรียกซ้ำใน Linux เพื่อให้แน่ใจว่าการตั้งค่าการอนุญาตของคุณมีผลกับโฟลเดอร์ย่อยและไฟล์
วิธีตรวจสอบการอนุญาตไฟล์ใน Linux
เมื่อเกิดข้อผิดพลาด "การอนุญาตถูกปฏิเสธ" ในไฟล์หรือการทำงานของไดเร็กทอรี ให้เริ่มต้นด้วยการตรวจสอบสิทธิ์ที่จัดสรรสำหรับผู้ใช้ กลุ่ม และอื่นๆ
ในการทำเช่นนั้น คุณสามารถใช้ ls -l
สั่งการ. ตัวอย่างเช่น ต่อไปนี้คือการอนุญาตสำหรับไฟล์และไดเร็กทอรีต่างๆ ในไดเร็กทอรี “/var”
ผลลัพธ์ด้านบนมีข้อมูลเฉพาะ
- คอลัมน์แรกแสดงถึงสิทธิ์ของไฟล์และไดเรกทอรี ตัวอักษรตัวแรกในคอลัมน์นี้ระบุประเภท:
d
หมายถึงไดเรกทอรีl
ย่อมาจากลิงก์สัญลักษณ์และ-
ไฟล์ปกติ - อักขระอีกเก้าตัวถูกจัดกลุ่มเป็นสามชุด:
u
ผู้ใช้g
กลุ่ม และo
เจ้าของระบุสิทธิ์ของไฟล์หรือไดเรกทอรีr
ระบุสิทธิ์ "อ่าน"w
ระบุสิทธิ์ "เขียน" และX
ระบุการอนุญาต "ดำเนินการ"
เมื่อคุณทราบการอนุญาตไฟล์ของไดเรกทอรีการทำงานหรือไฟล์ของคุณแล้ว คุณสามารถเปลี่ยนได้อย่างง่ายดาย
วิธีใช้ chmod เพื่อเปลี่ยนการอนุญาตไฟล์
chmod
คำสั่งเป็นวิธีที่ง่ายที่สุดในการเปลี่ยนสิทธิ์ของไฟล์ใน Linux ไวยากรณ์ทั่วไปสำหรับคำสั่งคือ:
chmod {permission}{operator}{mode}
- การอนุญาต:หมายถึงการอนุญาตที่มอบให้กับผู้ใช้ กลุ่ม เจ้าของ หรือทั้งหมด
- โอเปอเรเตอร์:สิ่งนี้บ่งชี้ถึงการอนุญาตที่มอบให้กับผู้รับมอบสิทธิ์:
+
ให้สิทธิ์-
ปฏิเสธการอนุญาตและ=
ระบุว่าจะตั้งค่าการอนุญาตใด - โหมด:สิ่งนี้กำหนดว่าต้องตั้งค่าการอนุญาตใด:
r
อ่านw
เขียนหรือx
ดำเนินการ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ chmod
และวิธีการทำงาน ลองดูบทความนี้
ตัวอย่างเช่น หากต้องการปฏิเสธไม่ให้ทุกคนเข้าถึงไดเร็กทอรีสำรองในไดเร็กทอรี "/var" คุณสามารถใช้คำสั่ง:
sudo chmod -w /var/backups
แม้ว่าจะเปลี่ยนการอนุญาตไฟล์โดยใช้ chmod
คำสั่งมีผล เพียงเปลี่ยนการอนุญาตไฟล์สำหรับไดเร็กทอรีหรือไฟล์ที่ระบุ
โชคดีที่คุณสามารถเปลี่ยนการอนุญาตไฟล์ซ้ำๆ ของไดเร็กทอรีหรือไฟล์ รวมถึงไดเร็กทอรีย่อยและไฟล์ ในการทำเช่นนั้น ใช้คำสั่ง chmod เรียกซ้ำ -r
ตัวเลือก
ตัวอย่างเช่น ให้ลบ read
. แบบเรียกซ้ำ สิทธิ์สำหรับไดเร็กทอรี "/var/backup" และไฟล์และไดเร็กทอรีย่อยทั้งหมด สิทธิ์ปัจจุบันคือ:
drwxrwxrwx 2 root root 4096 Jul 15 06:25 backups
มาเริ่มกันเลย chmod
ซ้ำเพื่อเปลี่ยนการอนุญาต:
sudo chmod –r -r /var/backups
ตอนนี้คุณจะเห็นว่าสิทธิ์ของไฟล์มีการเปลี่ยนแปลง
อนุญาตการเปลี่ยนแปลงแบบเรียกซ้ำด้วยการค้นหา
โดยปกติ คุณจะไม่ได้ตั้งค่าไฟล์และไดเร็กทอรีที่มีการอนุญาตที่คล้ายคลึงกัน เนื่องจากคุณต้องได้รับอนุญาตดำเนินการจึงจะ cd
ลงในไดเร็กทอรีเฉพาะ อย่างไรก็ตาม ไฟล์ส่วนใหญ่ไม่ต้องการการอนุญาตดำเนินการนี้
เพื่อเอาชนะสิ่งนี้ คุณสามารถใช้ find
ยูทิลิตี้ใน Linux วิธีนี้ช่วยให้คุณค้นหาเฉพาะไฟล์หรือไดเร็กทอรีและตั้งค่าการอนุญาตกับไฟล์เหล่านั้นได้
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ Find ใน Linux โปรดดูบทความนี้
ให้เราไปที่ไดเร็กทอรี "/var/log" ไดเร็กทอรีมีทั้งไฟล์และไดเร็กทอรี
ในการตั้งค่าการอนุญาตเฉพาะสำหรับไฟล์เท่านั้น เราสามารถใช้คำสั่ง find กับ -type f
ตัวเลือก
ดูตัวอย่างคำสั่งด้านล่าง:
sudo find /var/log/ -type f -exec chmod 777 {} ;
ในตัวอย่างข้างต้น เราใช้คำสั่ง find เพื่อค้นหาไฟล์ในไดเร็กทอรี “/var/log” จากนั้นตั้งค่าสิทธิ์ในการอ่าน เขียน และดำเนินการสำหรับผู้ใช้ กลุ่ม และทั้งหมด
เราสามารถทำกรณีเดียวกันสำหรับไดเร็กทอรี ในกรณีนี้ เราระบุ -type d
เพื่อรับเฉพาะไดเร็กทอรี
ตัวอย่างเช่น:
sudo find /var/log/ -type d -exec chmod 755 {} ;
ในตัวอย่างข้างต้น เราตั้งค่าการอนุญาต 755 ให้กับไดเร็กทอรีเท่านั้น ไม่ใช่ทั้งไฟล์และไดเร็กทอรี
คุณสามารถตรวจสอบได้โดยใช้ ls -la
คำสั่ง
คุณจะสังเกตเห็นว่าไฟล์ทั้งหมดได้รับอนุญาต 777 ในขณะที่ไดเรกทอรีมีสิทธิ์ 755
อยู่ในช่วงปิด
การรู้วิธีเปลี่ยนสิทธิ์ของไฟล์ใน Linux เป็นทักษะที่จำเป็น เนื่องจากจะช่วยป้องกันการเข้าถึงและการแก้ไขไฟล์และไดเรกทอรีต่างๆ โดยไม่ได้รับอนุญาต ในขณะเดียวกัน คุณยังสามารถเปลี่ยนความเป็นเจ้าของไฟล์เพื่อจำกัดการเข้าถึงไฟล์หรือใช้รายการควบคุมการเข้าถึงเพื่อควบคุมการอนุญาตไฟล์ใน Linux ได้ละเอียดยิ่งขึ้น