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

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

คุณสมบัติที่มีประโยชน์มากใน Linux คือ "Access Control Lists" (ACL) ซึ่งควบคุมการเข้าถึงไฟล์และไดเรกทอรี นี่คือวิธีการทำงานของ ACL ในการควบคุมสิทธิ์ไฟล์ใน Linux

หมายเหตุ: เพื่อเข้าใจอย่างลึกซึ้งว่า ACL ทำงานอย่างไร เราจะตั้งค่าผู้ใช้และกลุ่มบนระบบ Linux ที่ทำงานจริงก่อน การฝึกฝนต่อไปนี้ดำเนินบนเครื่องเสมือนที่รัน Kali OS ผู้ใช้ root มีสิทธิ์เพิ่มผู้ใช้ใหม่และจัดให้อยู่ในกลุ่ม

การสร้างผู้ใช้และกลุ่ม

ขั้นแรก เราจะล็อกอินเป็น root สร้างผู้ใช้และใส่เข้าไปในกลุ่มตามตารางด้านล่าง ชื่อผู้ใช้ตั้งง่ายๆ เพื่อช่วยเข้าใจแนวคิด

ผู้ใช้ กลุ่ม
john1
john2
john3
johns
jane1
jane2
janes

เราจะใช้คำสั่ง adduser เพื่อเพิ่มผู้ใช้ใหม่เข้าระบบ

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

คำสั่ง id จะแสดงรายละเอียดของผู้ใช้ที่เพิ่งสร้าง จะแสดง user id (uid), group id (gid) และชื่อกลุ่ม (groups) ผู้ใช้เมื่อสร้างจะถูกเพิ่มเข้าไปในกลุ่มที่มีชื่อเดียวกับชื่อผู้ใช้อัตโนมัติ ผู้ใช้นั้นจะเป็นสมาชิกเพียงคนเดียวของกลุ่ม

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

เช่นเดียวกัน ผู้ใช้ "john2" และ "john3" ก็ถูกสร้างขึ้น

adduser john2
adduser john3

เมื่อสร้างผู้ใช้สามคนแล้ว ใช้คำสั่ง id เพื่อดู user และ group id ของแต่ละคน

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

เราเห็นว่าผู้ใช้สามคนอยู่ในกลุ่มของตัวเอง – 1000, 1001 และ 1002 ตามตารางที่แสดงก่อนหน้า เราต้องการให้ผู้ใช้สามคนอยู่ในกลุ่มเดียวกันคือ johns เนื่องจากกลุ่มนี้ยังไม่มีในระบบ เราจะสร้างด้วยคำสั่ง groupadd:

groupadd -g <new_group_ID> <group_name>

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

Group ID ใหม่ระบุเป็น 5000 หากละเลย 스위ทช์ -g ระบบจะเลือก group ID เอง ชื่อกลุ่มใหม่คือ "johns" ตอนนี้ผู้ใช้สามคน – "john1", "john2" และ "john3" – ต้องถูกเพิ่มเป็นสมาชิกของกลุ่มนี้ เราจะใช้คำสั่ง usermod

usermod -g <group_name> <user_name>

usermod เพิ่มผู้ใช้ "user_name" เข้าไปในกลุ่ม "group_name" รูปด้านล่างแสดง uid และ gid ของ "john1" ก่อนเปลี่ยนกลุ่ม หลังจากคำสั่ง usermod รันสำเร็จ "john1" ถูกเพิ่มเข้าไปในกลุ่ม "johns" ด้วย gid 5000

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

กระบวนการเดียวกันทำกับผู้ใช้ "john2" และ "john3"

usermod -g johns john2
usermod -g johns john3

สุดท้าย รายละเอียดของผู้ใช้สามคนในกลุ่ม "johns" สามารถดูได้ด้วยคำสั่ง id

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

เราสร้างผู้ใช้สามคนและเพิ่มเข้าไปในกลุ่มเดียวกันสำเร็จแล้ว

เช่นเดียวกัน ผู้ใช้ "jane1" และ "jane2" ถูกสร้างและเพิ่มเข้าไปในกลุ่ม "janes" ด้วย gid 6000 รายละเอียดสามารถดูได้ด้วยคำสั่ง id ตามภาพด้านล่าง

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

ทำไมต้องการ Access Control Lists?

สมมติผู้ใช้ "john1" ล็อกอิน

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

สร้างไฟล์ใหม่ในไดเรกทอรี Home

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

และเพิ่มเนื้อหาบางส่วน

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

ใช้คำสั่ง ls เพื่อดูข้อมูลเมตาของไฟล์

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

ตัวอักษรแรกๆ ในเอาต์พุต - rw - r - - r - - คือสตริงสิทธิ์ มาวิเคราะห์กัน

– rw – r – – r – –
ประเภทไฟล์ สิทธิ์ของ john1 ต่อไฟล์ สิทธิ์ของสมาชิกกลุ่ม johns ต่อไฟล์ สิทธิ์ที่ให้กับคนอื่นนอกกลุ่ม johns

บทความนี้เป็นตัวนำที่ดีสำหรับสิทธิ์ไฟล์

ถ้า "john1" ในฐานะเจ้าของไฟล์ ต้องการให้สิทธิ์เขียนเพิ่มเฉพาะ "john2" และ "jane1" แต่คงสิทธิ์อ่านสำหรับ "john3" และ "jane2" จะทำอย่างไร?

rw – r – –
john1
john2
jane1
john3
jane2

ตัวเลือกหนึ่งคือสร้างกลุ่มใหม่ด้วยสิทธิ์อ่าน-เขียนสำหรับ "john1", "john2" และ "jane1" และอีกกลุ่มด้วยสิทธิ์อ่านอย่างเดียวสำหรับ "john3" และ "jane2" หาก john1 ต้องการแก้ไขสิทธิ์เพิ่มเติมสำหรับสมาชิกกลุ่มคนใด ต้องสร้างกลุ่มเพิ่มอีก การสร้างและจัดการกลุ่มหลายกลุ่มเป็นภาระให้ผู้ดูแลระบบ

แทนที่จะทำเช่นนั้น สามารถสร้าง "Access Control List" สำหรับไฟล์ได้ ซึ่งจะระบุชัดเจนว่าผู้ใช้แต่ละคนสามารถดำเนินการอะไรกับไฟล์นั้นได้บ้าง

วิธีสร้าง Access Control List (ACL) สำหรับไฟล์

ทุกไฟล์เมื่อสร้างจะมี ACL มอบหมายอยู่แล้ว การใช้งานอย่างมีประสิทธิภาพคือการแก้ไขมัน เพียงเจ้าของไฟล์และ root เท่านั้นที่สามารถแก้ไข ACL ของไฟล์ได้

เราสามารถใช้คำสั่ง getfacl เพื่อดู ACL ที่มีอยู่:

getfacl <file_name>

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

บรรทัดที่ขึ้นต้นด้วย # เป็นบรรทัดความคิดเห็น ข้อมูลจริงอยู่ในสามบรรทัดท้ายของเอาต์พุต ซึ่งคล้ายกับสตริงสิทธิ์ที่ได้ก่อนหน้า บรรทัด "user" หมายถึงสิทธิ์ที่มอบให้เจ้าของไฟล์ "john1" บรรทัด "group" หมายถึงสิทธิ์ที่มอบให้สมาชิกอื่นในกลุ่ม "johns" ตามที่คาดการณ์ บรรทัด "other" หมายถึงผู้อื่นนอกกลุ่ม

มาใช้คำสั่ง setfacl เพื่อแก้ไข ACL ที่มีอยู่บนไฟล์

setfacl -m entity:name:permissions <file_name>
entity name permissions
ค่าที่นี่ระบุว่า ACL นี้สำหรับใคร: user (u) หรือ group (g) หรือ others (o) ชื่อผู้ใช้หรือกลุ่มที่ ACL นี้เกี่ยวข้อง สิทธิ์อ่าน เขียน รัน แทนด้วยตัวอักษร r, w, x

ให้ "john2" ได้สิทธิ์อ่าน เขียน ไฟล์ก่อน

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

ตามด้วย "jane1"

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

มา ดู ACL ที่อัปเดตแล้วสำหรับ "secretfile"

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

เราเห็นว่าสิทธิ์อ่านและเขียนถูกมอบให้ "john2" และ "jane1"

การตรวจสอบความถูกต้องของ ACL

เราเห็นว่า "john2" สามารถอ่านไฟล์และเขียนลงไปได้

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

ข้อมูลใหม่ที่ "john2" ป้อนถูกเพิ่มต่อท้ายไฟล์

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

เช่นเดียวกัน "jane1" ได้สิทธิ์เดียวกัน – อ่านและเขียน

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

แต่ "john3" ในกลุ่มเดียวกัน เขียนไฟล์ไม่ได้

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

"jane2" ที่อยู่ในหมวด other ก็เขียนไฟล์ไม่ได้เช่นกัน

วิธีใช้ Access Control Lists (ACL) ควบคุมสิทธิ์ไฟล์ใน Linux

สรุป

กระบวนการเดียวกันสามารถขยายไปยังไดเรกทอรีได้ ACL ช่วยให้ผู้ดูแลระบบจัดการการเข้าถึงไฟล์และไดเรกทอรีได้อย่างชำนาญ