สิทธิ์การเข้าถึงไฟล์ใน Linux/Unix: วิธีการอ่าน เขียน และเปลี่ยนแปลงสิทธิ์เหล่านั้น
⚡ สรุปอย่างชาญฉลาด
สิทธิ์การเข้าถึงไฟล์ใน Linux และ Unix ควบคุมว่าใครสามารถอ่าน เขียน และเรียกใช้ไฟล์แต่ละไฟล์ได้ โดยปกป้องระบบผู้ใช้หลายคนผ่านสองชั้น ได้แก่ ความเป็นเจ้าของ ซึ่งกำหนดให้กับผู้ใช้ กลุ่ม และบุคคลอื่น ๆ และบิตสิทธิ์ในการอ่าน เขียน และเรียกใช้ไฟล์

สิทธิ์การเข้าถึงไฟล์ใน ลินุกซ์ และระบบ Unix จะกำหนดว่าใครสามารถอ่าน แก้ไข หรือเรียกใช้ไฟล์แต่ละไฟล์ได้ ซึ่งทำให้ระบบที่ใช้ร่วมกันหลายคนมีความปลอดภัย หน้าเว็บนี้จะอธิบายเกี่ยวกับกรรมสิทธิ์ของไฟล์ สิทธิ์ในการอ่าน เขียน และเรียกใช้ รวมถึงคำสั่งที่ใช้ในการเปลี่ยนแปลงสิทธิ์เหล่านั้น
ลินุกซ์เป็นระบบปฏิบัติการที่ลอกเลียนแบบยูนิก ซึ่งเป็นระบบปฏิบัติการแบบหลายผู้ใช้ที่ผู้ใช้หลายคนสามารถเข้าถึงได้พร้อมกัน ลินุกซ์ยังสามารถใช้งานบนเมนเฟรมและเซิร์ฟเวอร์ได้โดยไม่ต้องแก้ไขใดๆ แต่สิ่งนี้ทำให้เกิดข้อกังวลด้านความปลอดภัย เนื่องจากผู้ใช้ที่ไม่ได้รับอนุญาตหรือผู้ใช้ที่เป็นอันตรายสามารถทำลาย เปลี่ยนแปลง หรือลบข้อมูลสำคัญได้ เพื่อความปลอดภัยที่มีประสิทธิภาพ ลินุกซ์จึงแบ่งการอนุญาตออกเป็นสองระดับ:
- กรรมสิทธิ์
- การอนุญาต
แนวคิดเรื่องสิทธิ์การเข้าถึงไฟล์และการเป็นเจ้าของไฟล์นั้นมีความสำคัญอย่างยิ่งในลินุกซ์ ในที่นี้ เราจะอธิบายสิทธิ์การเข้าถึงไฟล์และการเป็นเจ้าของไฟล์ในลินุกซ์ และพูดคุยเกี่ยวกับทั้งสองอย่าง เริ่มกันที่เรื่องการเป็นเจ้าของไฟล์ก่อน
ความเป็นเจ้าของไฟล์ Linux
ไฟล์และไดเร็กทอรีทุกไฟล์ในระบบ Unix/Linux ของคุณจะถูกกำหนดเจ้าของไว้ 3 ประเภท ดังแสดงด้านล่าง แผนภาพด้านล่างแสดงให้เห็นว่าการเป็นเจ้าของนั้นเชื่อมโยงกับผู้ใช้ กลุ่ม และบุคคลอื่น ๆ อย่างไร
ผู้ใช้งาน
ผู้ใช้คือเจ้าของไฟล์ ตามค่าเริ่มต้น บุคคลที่สร้างไฟล์จะกลายเป็นเจ้าของไฟล์ ดังนั้นบางครั้งผู้ใช้จึงถูกเรียกว่าเจ้าของ
บัญชีกลุ่ม
A กลุ่มผู้ใช้ กลุ่มหนึ่งสามารถมีผู้ใช้หลายคนได้ ผู้ใช้ทุกคนที่อยู่ในกลุ่มเดียวกันจะมีสิทธิ์การเข้าถึงไฟล์แบบกลุ่มในระบบ Linux เหมือนกัน สมมติว่าคุณมีโปรเจกต์ที่หลายคนจำเป็นต้องเข้าถึงไฟล์ แทนที่จะกำหนดสิทธิ์ให้กับผู้ใช้แต่ละคนด้วยตนเอง คุณสามารถเพิ่มผู้ใช้ทั้งหมดลงในกลุ่มและกำหนดสิทธิ์การเข้าถึงไฟล์แบบกลุ่มให้กับสมาชิกในกลุ่มนั้น ๆ เพื่อให้เฉพาะสมาชิกในกลุ่มนั้น ๆ เท่านั้นที่สามารถอ่านหรือแก้ไขไฟล์ได้ และไม่มีใครอื่นสามารถทำได้
อื่นๆ
ผู้ใช้รายอื่น ๆ ที่สามารถเข้าถึงไฟล์ได้ บุคคลนั้นไม่ได้เป็นผู้สร้างไฟล์และไม่ได้อยู่ในกลุ่มผู้ใช้ที่มีสิทธิ์เป็นเจ้าของไฟล์ กล่าวคือ หมายความว่าทุกคนอื่น ๆ นั่นเอง ดังนั้น เมื่อคุณตั้งค่าสิทธิ์การเข้าถึงสำหรับผู้อื่น ก็เท่ากับเป็นการตั้งค่าสิทธิ์การเข้าถึงสำหรับทุกคนในโลกด้วย
ทีนี้คำถามสำคัญก็เกิดขึ้น: ลินุกซ์แยกแยะประเภทผู้ใช้ทั้งสามนี้ได้อย่างไร เพื่อไม่ให้ผู้ใช้ 'A' เข้าไปแก้ไขไฟล์ที่มีข้อมูลสำคัญหรือข้อมูลของผู้อื่น เช่น ผู้ใช้ 'B' ได้? มันก็เหมือนกับไม่อยากให้เพื่อนร่วมงานมาทำงานในเครื่องของคุณนั่นแหละ คอมพิวเตอร์ลินุกซ์ เพื่อดูรูปภาพของคุณ นี่คือจุดที่การอนุญาตเข้ามามีบทบาท และเป็นตัวกำหนดพฤติกรรมของผู้ใช้
เรามาทำความเข้าใจระบบการอนุญาตสิทธิ์บนลินุกซ์กันเถอะ
สิทธิ์ของไฟล์ Linux
ไฟล์และไดเร็กทอรีทุกไฟล์ในระบบ Unix/Linux ของคุณมีสิทธิ์การเข้าถึงสามประเภทที่กำหนดไว้สำหรับเจ้าของทั้งสามกลุ่มที่กล่าวถึงข้างต้น
- อ่าน: การอนุญาตนี้จะให้สิทธิ์คุณในการเปิดและอ่านไฟล์ การอนุญาตให้อ่านในไดเร็กทอรีจะให้สิทธิ์คุณในการแสดงรายการเนื้อหาภายในไดเร็กทอรีนั้น
- เขียน: สิทธิ์ในการเขียนจะให้สิทธิ์คุณในการแก้ไขเนื้อหาของไฟล์ สิทธิ์ในการเขียนบนไดเร็กทอรีจะให้สิทธิ์คุณในการเพิ่ม ลบ และเปลี่ยนชื่อไฟล์ที่จัดเก็บอยู่ในไดเร็กทอรีนั้น ลองพิจารณาสถานการณ์ที่คุณมีสิทธิ์ในการเขียนไฟล์ แต่ไม่มีสิทธิ์ในการเขียนบนไดเร็กทอรีที่ไฟล์นั้นจัดเก็บอยู่ คุณจะสามารถแก้ไขเนื้อหาของไฟล์ได้ แต่คุณจะไม่สามารถเปลี่ยนชื่อ ย้าย หรือลบไฟล์ออกจากไดเร็กทอรีได้
- ดำเนินการ: In Windowsโดยปกติแล้วไฟล์โปรแกรมที่สามารถเรียกใช้งานได้จะมีนามสกุล “.exe” ซึ่งคุณสามารถเรียกใช้งานได้ง่าย ในระบบ Unix/Linux คุณจะไม่สามารถเรียกใช้งานโปรแกรมได้เว้นแต่จะได้รับการตั้งค่าสิทธิ์ในการเรียกใช้งาน หากไม่ได้รับการตั้งค่าสิทธิ์ในการเรียกใช้งาน คุณอาจยังคงสามารถดูหรือแก้ไขโค้ดของโปรแกรมได้ (หากได้รับการตั้งค่าสิทธิ์ในการอ่านและเขียน) แต่จะไม่สามารถเรียกใช้งานได้
มาดูสิทธิ์การเข้าถึงไฟล์ใน Linux พร้อมตัวอย่างกัน การรันคำสั่ง ls -l ในเทอร์มินัลจะแสดงผลดังนี้:
ls -l
ภาพหน้าจอข้างล่างแสดงสตริงสิทธิ์ในรูปแบบรายการยาว
ในที่นี้ เราได้ไฮไลต์ '-rw-rw-r–' และรหัสที่ดูแปลกตานี้คือรหัสที่บอกเราเกี่ยวกับสิทธิ์การเข้าถึงแบบ Unix ที่มอบให้กับเจ้าของ กลุ่มผู้ใช้ และบุคคลทั่วไป
ในที่นี้ เครื่องหมาย '-' ตัวแรกหมายความว่าเราได้เลือกไฟล์แล้ว ไอคอนด้านล่างแสดงถึงไฟล์ทั่วไป
มิฉะนั้น หากเป็นไดเร็กทอรี จะแสดงตัวอักษร 'd' ดังเช่นในรายการด้านล่าง
ตัวละครค่อนข้างจำง่าย
- r = สิทธิ์ในการอ่าน
- w = สิทธิ์ในการเขียน
- x = สิทธิ์ในการดำเนินการ
- – = ไม่ได้รับอนุญาต
ลองพิจารณาในมุมนี้ดู ส่วนแรกของรหัสคือ 'rw-' ซึ่งหมายความว่าเจ้าของ 'Home' สามารถ:
- อ่านไฟล์
- เขียนหรือแก้ไขไฟล์
เจ้าของไฟล์ไม่สามารถเรียกใช้ไฟล์ได้ เนื่องจากบิตการเรียกใช้งานถูกตั้งค่าเป็น '-' ไอคอนด้านล่างแสดงให้เห็นว่าบิตการเรียกใช้งานถูกล้างเป็นขีดแล้ว
โดยปกติแล้ว ระบบปฏิบัติการ Linux หลายตัว เช่น Fedora, CentOS และอื่นๆ ถูกออกแบบมาให้ทำงานในลักษณะนี้ Ubuntu เพิ่มผู้ใช้ลงในกลุ่มที่มีชื่อเดียวกันกับผู้ใช้ ตัวอย่างเช่น ผู้ใช้ชื่อ 'tom' จะถูกเพิ่มเข้าไปในกลุ่มชื่อ 'tom'
ส่วนที่สองคือ 'rw-' ซึ่งใช้สำหรับกลุ่มผู้ใช้ 'Home' และสมาชิกในกลุ่มสามารถ:
- อ่านไฟล์
- เขียนหรือแก้ไขไฟล์
ส่วนที่สามเป็นส่วนสำหรับทั่วโลก ซึ่งหมายถึงผู้ใช้ทุกคน มีข้อความว่า 'r–' ซึ่งหมายความว่าผู้ใช้สามารถทำได้เพียง:
- อ่านไฟล์
ตารางด้านล่างนี้แสดงการเชื่อมโยงแต่ละส่วนของสตริงสิทธิ์การเข้าถึงกับเจ้าของ กลุ่ม และบุคคลทั่วไป
การเปลี่ยนสิทธิ์การเข้าถึงไฟล์/ไดเร็กทอรีใน Linux โดยใช้คำสั่ง 'chmod'
สมมติว่าคุณไม่ต้องการให้เพื่อนร่วมงานเห็นภาพส่วนตัวของคุณ คุณสามารถทำได้โดยการเปลี่ยนสิทธิ์การเข้าถึงไฟล์
เราสามารถใช้คำสั่ง 'chmod' ได้ คำสั่งซึ่งย่อมาจาก 'change mode' (เปลี่ยนโหมด) โดยใช้คำสั่งนี้ เราสามารถตั้งค่าสิทธิ์การเข้าถึง (อ่าน เขียน เรียกใช้งาน) บนไฟล์หรือไดเร็กทอรีสำหรับเจ้าของ กลุ่ม และบุคคลทั่วไปได้
ไวยากรณ์:
chmod permissions filename
คำสั่งนี้มีสองวิธีในการใช้งาน:
- โหมดแอบโซลูท
- โหมดสัญลักษณ์
โหมดสัมบูรณ์ (ตัวเลข) ในลินุกซ์
ในโหมดนี้ สิทธิ์การเข้าถึงไฟล์จะไม่แสดงเป็นตัวอักษร แต่จะแสดงเป็นตัวเลขฐานแปดสามหลัก ตารางด้านล่างแสดงตัวเลขสำหรับสิทธิ์การเข้าถึงทุกประเภท
| จำนวน | ประเภทสิทธิ์ | สัญลักษณ์ |
|---|---|---|
| 0 | ไม่ได้รับอนุญาต | - |
| 1 | ดำเนินงาน | -NS |
| 2 | เขียน | -ใน- |
| 3 | ดำเนินการ + เขียน | -wx |
| 4 | อ่าน | NS- |
| 5 | อ่าน + ดำเนินการ | rx |
| 6 | อ่าน + เขียน | ร- |
| 7 | อ่าน + เขียน + ดำเนินการ | rwx |
เรามาดูคำสั่ง chmod ในการใช้งานจริงกัน ดังแสดงในหน้าต่างเทอร์มินัลด้านล่าง
ในหน้าต่างเทอร์มินัลด้านบน เราได้เปลี่ยนสิทธิ์การเข้าถึงไฟล์ 'sample' เป็น '764' รหัส '764' หมายความว่าอย่างไร:
- เจ้าของสามารถอ่าน เขียน และสั่งการได้
- กลุ่มผู้ใช้สามารถอ่านและเขียนได้
- โลกสามารถอ่านได้เพียงอย่างเดียว
แสดงเป็น '-rwxrw-r–' ดังผลลัพธ์ด้านล่าง
นี่คือวิธีการเปลี่ยนสิทธิ์การเข้าถึงไฟล์ของผู้ใช้ใน Linux โดยการกำหนดค่าตัวเลขสัมบูรณ์
โหมดสัญลักษณ์ใน Linux
ในโหมดสัมบูรณ์ คุณสามารถเปลี่ยนสิทธิ์การเข้าถึงสำหรับเจ้าของทั้งสามคนได้ ส่วนในโหมดสัญลักษณ์ คุณสามารถแก้ไขสิทธิ์การเข้าถึงของเจ้าของที่ระบุได้ โดยใช้สัญลักษณ์ทางคณิตศาสตร์ในการแก้ไขสิทธิ์การเข้าถึงไฟล์ในระบบ Unix
| OperaTor | Descriptไอออน |
|---|---|
| + | เพิ่มสิทธิ์ให้กับไฟล์หรือไดเร็กทอรี |
| - | ลบการอนุญาต |
| = | ตั้งค่าสิทธิ์และแทนที่สิทธิ์ที่ตั้งไว้ก่อนหน้านี้ |
เจ้าของแต่ละรายมีรายชื่อดังต่อไปนี้
| ผู้ใช้งาน | ความหมาย |
|---|---|
| u | ผู้ใช้/เจ้าของ |
| g | กลุ่ม |
| o | อื่น ๆ |
| a | ทั้งหมด |
เราจะไม่ใช้หมายเลขสิทธิ์แบบตัวเลข เช่น 755 แต่จะใช้ตัวอักษร เช่น rwx ลองดูตัวอย่างด้านล่างนี้
การเปลี่ยนความเป็นเจ้าของและกลุ่มใน Linux
หากต้องการเปลี่ยนสิทธิ์การเป็นเจ้าของไฟล์หรือไดเร็กทอรี คุณสามารถใช้คำสั่งต่อไปนี้:
chown user filename
ในกรณีที่คุณต้องการเปลี่ยนทั้งผู้ใช้และกลุ่มสำหรับไฟล์หรือไดเร็กทอรี ให้ใช้คำสั่ง:
chown user:group filename
ลองมาดูตัวอย่างการใช้งานดังที่แสดงด้านล่างนี้
ในกรณีที่คุณต้องการเปลี่ยนเฉพาะเจ้าของกลุ่ม ให้ใช้คำสั่ง:
chgrp group_name filename
'chgrp' ย่อมาจาก Change Group (เปลี่ยนกลุ่ม) ภาพหน้าจอด้านล่างแสดงการใช้งานคำสั่ง chgrp
ปลาย
- ไฟล์ /etc/group ประกอบด้วยกลุ่มทั้งหมดที่กำหนดไว้ในระบบ
- คุณสามารถใช้คำสั่ง “groups” เพื่อค้นหากลุ่มทั้งหมดที่คุณเป็นสมาชิกได้ ดังแสดงด้านล่าง
- คุณสามารถใช้คำสั่ง newgrp เพื่อทำงานในฐานะสมาชิกของกลุ่มอื่นที่ไม่ใช่กลุ่มเริ่มต้นของคุณได้ ดังแสดงด้านล่าง
- คุณไม่สามารถให้สองกลุ่มเป็นเจ้าของไฟล์เดียวกันได้
- ใน Linux ไม่มีการจัดกลุ่มซ้อนกัน กลุ่มหนึ่งไม่สามารถเป็นกลุ่มย่อยของอีกกลุ่มหนึ่งได้
- x — การเรียกใช้ไดเร็กทอรี หมายถึง การได้รับอนุญาตให้ "เข้า" ไปยังไดเร็กทอรี และอาจเข้าถึงไดเร็กทอรีย่อยได้
- นอกจากนี้ ยังมีสิทธิ์การเข้าถึงอื่นๆ ที่คุณสามารถตั้งค่าได้สำหรับไฟล์และไดเร็กทอรี ซึ่งจะกล่าวถึงในบทเรียนขั้นสูงถัดไป






.png)
.png)
.png)
.png)
.png)


