
ตั้งแต่เริ่มก่อตั้ง Linux ได้รับการปรับแต่งให้รองรับสภาพแวดล้อมแบบผู้ใช้หลายคน เมื่อมีผู้ใช้และกลุ่มจำนวนมากบนระบบการทำงาน เป็นเรื่องปกติที่จะพบไดเร็กทอรีที่แชร์ระหว่างผู้ใช้ในกลุ่มเดียวกัน และปัญหาเกิดจากการแชร์ไฟล์ในไดเร็กทอรี ในบทความนี้ เราจะพูดถึงวิธีที่คุณสามารถใช้ Sticky Bit เพื่อปรับแต่งสิทธิ์การเข้าถึงไฟล์บนไดเร็กทอรีที่ใช้ร่วมกันได้
เพื่อจุดประสงค์ในการอธิบายประกอบ เรามีระบบที่มีผู้ใช้สามคน – john1, john2 และ john3 ทั้งหมดเป็นสมาชิกของกลุ่มทั่วไป “johns”
สมมติว่า "john1" สร้างไดเร็กทอรีใหม่ชื่อ "shared-dir" ซึ่งมีไว้สำหรับแชร์กับผู้ใช้ทั้งหมดของกลุ่ม "johns"

ด้วย ls
คำสั่ง เราสามารถดูการอนุญาตของ "shared-dir" ซึ่งสามารถตีความได้ในตารางต่อไปนี้:

เฉพาะ “john1” เท่านั้นที่สามารถอ่านเนื้อหาของไดเร็กทอรีและเขียนไปยังไดเร็กทอรีได้ด้วย เนื่องจากเรากำลังทำงานกับไดเร็กทอรีที่ใช้ร่วมกัน เราจึงต้องการให้ผู้ใช้ทุกคนในกลุ่มสามารถเขียนถึง "shared-dir" ได้
สำหรับสิ่งนี้ เราจะแก้ไขการอนุญาตโดยใช้ chmod
สั่งการ. เราจะเพิ่มสิทธิ์ "เขียน" ให้กับผู้ใช้กลุ่ม "johns" ทั้งหมดดังที่แสดงด้านล่าง

เราสามารถดูการอนุญาตที่อัปเดตสำหรับ "shared-dir" ดังที่แสดงด้านล่าง ส่วนที่ขีดเส้นใต้สีเหลืองแสดงว่ากลุ่ม “johns” ได้รับอนุญาตให้ “เขียน” แล้ว

การเพิ่มไฟล์ไปยังไดเร็กทอรีที่ใช้ร่วมกัน
ตอนนี้ “john1” เพิ่มสองไฟล์ (j1_file1.txt และ j1_file2.txt) ไปที่ “shared-dir”

เพื่อให้เข้าใจได้ง่าย อักขระสองตัวแรกของชื่อไฟล์จะมีความหมายเหมือนกันกับชื่อผู้ใช้

ในทำนองเดียวกัน “john2” ยังสามารถ “เขียน” ไปยังไดเร็กทอรี “shared-dir”


ตอนนี้มีสี่ไฟล์ใน “shared-dir”

มีปัญหากับการตั้งค่าปัจจุบันหรือไม่
ไฟล์ “j1_file1.txt” ถูกสร้างขึ้นโดย “john1” ทำให้ “john1” เป็นเจ้าของไฟล์ ตอนนี้ “john2” เข้าสู่ระบบและพยายามลบไฟล์นี้ และเขาจะสามารถทำได้
“john1” เป็นเจ้าของไฟล์ แต่ “john2” สามารถลบออกได้เนื่องจากสิทธิ์ “เขียน” ให้กับสมาชิกทุกคนในกลุ่ม “johns”
สถานการณ์นี้ไม่เหมาะ เราต้องการให้ผู้ใช้ทุกคนสามารถเขียนไปยังไดเร็กทอรีได้ แต่เฉพาะเจ้าของไฟล์เท่านั้นที่จะต้องสามารถลบไฟล์ได้ สิ่งนี้สามารถทำได้อย่างไร
ขอแนะนำ Sticky Bit
บิตเหนียวเป็นการอนุญาตพิเศษที่สามารถตั้งค่าบนไดเร็กทอรีที่มีสิทธิ์ "เขียน" ที่กำหนดไว้สำหรับกลุ่มที่เข้าถึงได้ บิตนี้ช่วยให้แน่ใจว่าสมาชิกทุกคนในกลุ่มสามารถเขียนไปยังไดเร็กทอรี แต่เฉพาะผู้ที่สร้างไฟล์ซึ่งเป็นเจ้าของไฟล์เท่านั้นที่สามารถลบไฟล์ได้
chmod
คำสั่งด้วย +t
แฟล็กสามารถใช้เพื่อตั้งค่าสติ๊กกี้บิตบนไดเร็กทอรี

สามารถดูการอนุญาตที่อัปเดตด้านล่าง

ตอนนี้ หาก “john2” พยายามลบไฟล์ “j1_file2.txt” ที่สร้างโดย “john1” จะไม่อนุญาตให้ดำเนินการดังกล่าว

หากคุณลบการอนุญาต "ดำเนินการ" สำหรับ "ผู้อื่น" ดังที่แสดงด้านล่าง:

การมีอยู่ของบิตเหนียวบนไดเร็กทอรีจะแสดงด้วยตัวพิมพ์ใหญ่ "T" ในส่วน "อื่นๆ" ของสตริงการอนุญาต พฤติกรรมของ Sticky Bit บนไดเร็กทอรียังคงเหมือนเดิม

ตัวแปรของคำสั่ง “chmod”
รูปแบบตัวเลขของ chmod
คำสั่งยังสามารถใช้เพื่อตั้งค่าสติ๊กกี้บิตบนไดเร็กทอรีได้อีกด้วย
chmod nxyz <file_name>
ที่ไหน
- n =1 หมายถึงบิตเหนียว ค่าอื่นๆ ของ “n” หมายถึงการอนุญาตพิเศษอื่นๆ
- x :สิทธิ์ที่มอบให้กับเจ้าของไฟล์
- y :อนุญาตให้กลุ่มเข้าถึงไฟล์ได้
- z :อนุญาติให้ผู้อื่น
ในการตั้งค่า Sticky bit บน “shared-dir” ให้ใช้คำสั่งต่อไปนี้:
chmod 1755 shared-dir
ซึ่งให้ผลลัพธ์เหมือนกับการใช้ +t
ในการอนุญาตเริ่มต้นที่มีอยู่
การใช้ Sticky bit นั้นดีสำหรับไดเร็กทอรีเท่านั้น มันไม่สมเหตุสมผลเลยที่จะใช้มันกับไฟล์