Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

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

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

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

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

ผู้ใช้ กลุ่ม
john1
john2
john3
จอนส์
เจน1
เจน2
เจนส์

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

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

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

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

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

adduser john2
adduser john3

เมื่อสร้างผู้ใช้ทั้งสามแล้ว ให้ใช้id คำสั่งเพื่อดูรหัสผู้ใช้และกลุ่มที่เกี่ยวข้อง

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

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

groupadd -g <new_group_ID> <group_name>

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

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

usermod -g <group_name> <user_name>

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

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

ขั้นตอนเดียวกันนี้ดำเนินการสำหรับผู้ใช้ “john2” และ “john3”

usermod -g johns john2
usermod -g johns john3

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

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

เราได้สร้างผู้ใช้สามคนและเพิ่มลงในกลุ่มเดียวกันเรียบร้อยแล้ว

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

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

รายการควบคุมการเข้าใช้จำเป็นอย่างไร

สมมติว่าผู้ใช้ "john1" เข้าสู่ระบบ

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

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

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

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

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

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

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

อักขระสองสามตัวแรกในผลลัพธ์ - rw - r - - r - - บัญชีสำหรับสตริงการอนุญาต ให้เราวิเคราะห์มัน

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

บทความนี้เป็นแนวทางที่ดีในการอนุญาตไฟล์

จะเกิดอะไรขึ้นหาก “john1” ซึ่งเป็นเจ้าของไฟล์ต้องการให้สิทธิ์ในการเขียนเพิ่มเติมเฉพาะกับ “john2” และ “jane1” แต่ยังคงมีสิทธิ์ในการอ่านสำหรับ “john3” และ “jane2”

rw – ร – –
john1
john2
jane1
john3
jane2

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

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

จะสร้างรายการควบคุมการเข้าถึง (ACL) สำหรับไฟล์ได้อย่างไร

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

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

getfacl <file_name>

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

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

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

setfacl -m entity:name:permissions <file_name>
เอนทิตี ชื่อ สิทธิ์
ค่าที่นี่แสดงว่ารายการ ACL มีไว้สำหรับใคร:

ผู้ใช้ (u) หรือกลุ่ม (g) หรืออื่น ๆ (o)

ชื่อของผู้ใช้หรือกลุ่มที่เกี่ยวข้องกับรายการ ACL สิทธิ์ในการอ่าน เขียน ดำเนินการ จะแสดงด้วยตัวอักษร r,w,x

“john2” จะได้รับสิทธิ์อ่านและเขียนไฟล์ก่อน

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

ตามด้วย “jane1”

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

ให้เราดู ACL ที่อัปเดตสำหรับ “secretfile”

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

เราจะเห็นได้ว่ามีการกำหนดสิทธิ์ในการอ่านและเขียนให้กับ “john2” และ “jane1”

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

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

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

ข้อมูลใหม่ที่ป้อนโดย “john2” ถูกผนวกเข้ากับไฟล์แล้ว

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

ในทำนองเดียวกัน “jane1” จะได้รับสิทธิ์เดียวกัน – สิทธิ์อ่านและเขียน

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

แต่ “john3” ในกลุ่มเดียวกันไม่สามารถเขียนไปยังไฟล์ได้

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

“jane2” ซึ่งอยู่ในหมวดหมู่อื่นก็ไม่สามารถเขียนไปยังไฟล์ได้เช่นกัน

วิธีใช้รายการควบคุมการเข้าถึงเพื่อควบคุมสิทธิ์ของไฟล์บน Linux

บทสรุป

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