ถอดรหัสการอนุญาตระบบไฟล์ Linux

เผยแพร่แล้ว: 2017-02-24

การอนุญาตไฟล์ลีนุกซ์อาจดูเหมือนเป็นอักษรอียิปต์โบราณสำหรับบางคนและเข้าใจได้ โมเดลการอนุญาตระบบไฟล์ของ Linux มีต้นกำเนิดมาจาก UNIX อย่างไรก็ตาม พวกมันค่อนข้างเข้าใจได้ง่าย เมื่อคุณเข้าใจตรรกะเบื้องหลังพวกมันแล้ว

กลุ่มสิทธิ์และประเภท

การควบคุมการเข้าถึงไฟล์และโฟลเดอร์ทั้งหมดถูกกำหนดไว้ในระบบไฟล์โดยใช้ข้อมูลต่อไปนี้:

  • กลุ่มสิทธิ์สามกลุ่ม: u สำหรับเจ้าของ g กลุ่ม o หรือ a ผู้ใช้ทั้งหมด
  • อนุญาตสามประเภท: r , อ่าน , x , ดำเนินการ, w , เขียน

ประเภทการอนุญาตคืออักขระ “r”, ”x” และ “w” ซึ่งเรียกว่าแฟล็ก และจะแสดงในลักษณะนี้หากคุณแสดงรายการสิทธิ์ของไฟล์หรือโฟลเดอร์ด้วยวิธีใดวิธีหนึ่ง แฟล็กที่ไม่ได้ตั้งค่าจะแสดงด้วยอักขระ "-" กลุ่มสิทธิ์ที่ใช้ในคำสั่งที่เปลี่ยนความเป็นเจ้าของและกลุ่มของไฟล์ ซึ่งเราจะเจาะลึกในไม่ช้า

กำลังดูสิทธิ์

คุณสามารถดูสิทธิ์ของไฟล์หรือโฟลเดอร์ได้โดยใช้ตัวจัดการไฟล์ GUI หรือโดยการตรวจสอบผลลัพธ์ของคำสั่ง ls ในคอนโซลเทอร์มินัล

เปิดเทอร์มินัลของคุณและพิมพ์คำสั่งต่อไปนี้:

$ ทดสอบการสัมผัส

$ ls -la test

-rw-r–r– 1 yorgos staff 0 ก.พ. 23 17:07 ทดสอบ

สตริง “-rw-r–r–” มีข้อมูลการอนุญาตระบบไฟล์ที่เราสนใจ ฟิลด์ที่เหลือจากซ้ายไปขวาจะแสดงข้อมูลต่อไปนี้:

  • ไฟล์นี้มีลิงก์กี่ลิงก์ (1)
  • เจ้าของ userid (ยอร์กอส)
  • รหัสกลุ่ม (พนักงาน)
  • ความยาวไฟล์เป็นไบต์ (0)
  • วันที่สร้าง (23 ก.พ.)
  • สร้างเวลา (17:07)
  • ชื่อไฟล์ (ทดสอบ)

บิตการอนุญาต

คุณจะสังเกตเห็นว่ามีกลุ่มและประเภทการอนุญาตที่แตกต่างกัน 9 แบบ แต่มีตำแหน่งตั้งค่าสถานะ 10 ตำแหน่ง อันแรกแสดงแฟล็กประเภทไฟล์ในขณะที่อันหลังระบุการอนุญาตด้วยตนเอง ประเภทไฟล์อาจเป็น "-" สำหรับไฟล์ "l" สำหรับลิงก์สัญลักษณ์ (นี่คือลิงก์ระบบไฟล์ที่ชี้ไปที่ไฟล์อื่น) และ "d" สำหรับไดเร็กทอรี เนื่องจากอักขระ/แฟล็กตัวแรกในตัวอย่างของเราคือ “-” เรากำลังพูดถึงไฟล์ธรรมดา ต่อไป เรามาทำลายช่องการอนุญาตกัน:

: ประเภทไฟล์ (สามารถมี l, - หรือ d)

rw- : สิทธิ์ในการอ่านและเขียน (ไม่ดำเนินการ) สิทธิ์เหล่านี้มีไว้สำหรับเจ้าของ

r– : สิทธิ์ในการอ่าน, ไม่มีสิทธิ์ในการเขียนและดำเนินการ สิทธิ์เหล่านี้ถือว่าผู้ใช้ที่อยู่ในกลุ่ม

r– : สิทธิ์ในการอ่าน, ห้ามเขียนและดำเนินการ สุดท้ายนี้ สิทธิ์เหล่านี้เกี่ยวข้องกับทุกคน

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

แก้ไขการอนุญาต

ในการแก้ไขการอนุญาตของไฟล์หรือโฟลเดอร์ คุณสามารถใช้คำสั่ง GUI อีกครั้ง (ซึ่งอยู่นอกขอบเขตของบทความนี้ เราจะไม่ไปที่นั่น) หรือใช้คำสั่ง linux บางอย่างในเทอร์มินัลของคุณ คำสั่งที่เราจะใช้เรียกว่า chmod (เปลี่ยนโหมดไฟล์) คำสั่ง chmod ยอมรับพารามิเตอร์ต่างๆ ที่เปลี่ยนลักษณะการทำงานได้หลายวิธี แต่การใช้งานทั่วไปมีดังต่อไปนี้:

$ chmod <โหมด> <ไฟล์>

<mode> ถูกกำหนดโดยสัญลักษณ์ต่อไปนี้:

r ธงการอ่าน

w ธงการเขียน

x ธงดำเนินการ

u ธงการอนุญาตผู้ใช้ / เจ้าของ

g ธงการอนุญาตกลุ่ม

o แฟล็กการอนุญาตผู้ใช้รายอื่น

มีอีกสองสามข้อ แต่เราจะพูดถึงในส่วนสุดท้ายของบทความของเรา

สมมติว่าคุณต้องการให้สิทธิ์ดำเนินการกับผู้ใช้ที่อยู่ในกลุ่ม (แต่ต้องแน่ใจว่าคุณเป็นเจ้าของไฟล์ก่อน!):

$ chown g+x ทดสอบ
$ ls -l ทดสอบ
-rwxrwxrwx 1 yorgos staff 0 ก.พ. 23 17:07 ทดสอบ

หรือบางทีคุณอาจต้องล็อกเอาต์ทุกคนโดยสิ้นเชิง พวกเขาจะไม่สามารถอ่าน เขียน หรือรันไฟล์ได้:

$ chown o-rwx ทดสอบ
$ ls -l ทดสอบ
-rwxrwx— พนักงาน 1 คนของ yorgos 0 ก.พ. 23 17:07 น. ทดสอบ

ที่นี่เราเห็นแฟล็กสุดท้ายทั้งหมดไม่ได้ตั้งค่าเป็น "-"
หากคุณต้องการดูตัวอย่างเพิ่มเติม ให้ดูที่หน้าคู่มือสำหรับ chmod โดยออกคำสั่งต่อไปนี้:

$ man chmod

เจ้าของและกลุ่ม

คุณยังสามารถเปลี่ยนความเป็นเจ้าของไฟล์และกลุ่มของไฟล์ได้โดยใช้ คำสั่ง chown

คำ สั่ง chown ยอมรับพารามิเตอร์ต่างๆ ที่เปลี่ยนแปลงพฤติกรรมของมันในทางใดทางหนึ่ง แต่การใช้งานทั่วไปส่วนใหญ่มีดังต่อไปนี้:

# chown <เจ้าของ> <ไฟล์>

หรือ

# chown <owner:group> <file>

ตัวอย่างแรกใช้เพื่อเปลี่ยนเจ้าของไฟล์เป็นคนอื่น อย่างไรก็ตาม โปรดทราบว่าคุณต้องมีสิทธิ์เข้าถึงรูทเพื่อเปลี่ยนความเป็นเจ้าของไฟล์ ดังนั้น โดยดำเนินการดังต่อไปนี้:

#ชวนใครมาทดสอบ

# ls -l ทดสอบ

-rwxrwxrwt 1 ไม่มีพนักงาน 0 ก.พ. 23 17:07 ทดสอบ

มันถูกเปิดเผยว่าไฟล์นี้เป็นเจ้าของโดย ID ผู้ใช้ 'ไม่มีใคร' และไม่ใช่โดย 'yorgos' อีกต่อไป

ในทำนองเดียวกันคำสั่ง:

# chown none: การทดสอบล้อ

# ls -l ทดสอบ

-rwxrwxrwt 1 ไม่มีคนล้อ 0 ก.พ. 23 17:07 ทดสอบ


เปลี่ยนความเป็นเจ้าของไฟล์เป็น none และกลุ่ม เป็น wheel

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งและพารามิเตอร์ต่างๆ ให้ดูที่หน้าคู่มือ chown โดยออกคำสั่ง:

$ man chown

สิทธิ์พิเศษ

นอกจากประเภทและกลุ่มสิทธิ์ที่เราได้กล่าวถึงไปแล้วในบทความ ยังมีอีกสองสามประเภทที่เรียกว่า “สิทธิ์พิเศษ”

เหล่านี้มีดังต่อไปนี้:

      ตั้งค่าสถานะ ID ผู้ใช้และตั้งค่า ID กลุ่ม

t       ธงเหนียว.

ค่าแรกถูกกำหนดโดยใช้แฟล็ก "s" ในคำสั่ง chmod ในลักษณะปกติ เช่น:

$ chmod u+s ทดสอบ
$ ls -l ทดสอบ
-rwsrwx—   1 ยอร์กอส   พนักงาน   0 ก.พ. 23 17:07 น. ทดสอบ

แฟล็กนี้เรียกอีกอย่างว่าแฟล็ก SUID (Set User ID) หรือ SGID (Set Group ID) หากมีการตั้งค่าบิตนี้ ไฟล์จะสืบทอดสิทธิ์การเข้าถึงของเจ้าของ ซึ่งหมายความว่าใครก็ตามที่รันไฟล์นั้นกำลังดำเนินการดังกล่าวในฐานะเจ้าของ SGID นั้นคล้ายคลึงกัน แต่ไฟล์จะสืบทอดสิทธิ์การเข้าถึงของกลุ่ม แน่นอนว่าสิ่งนี้อาจนำไปสู่ปัญหาด้านความปลอดภัย ดังนั้นจึงต้องระมัดระวัง

บิตเหนียวหรือ "t" มีประโยชน์อย่างยิ่ง เมื่อตั้งค่าในไดเร็กทอรีซึ่งมักจะแชร์เช่น /tmp ไฟล์ที่สร้างขึ้นในนั้นสามารถเปลี่ยนชื่อหรือลบได้โดยเจ้าของที่เกี่ยวข้องเท่านั้น หากไม่ได้ตั้งค่าสติ๊กกี้บิต เจ้าของไดเร็กทอรีจะไม่สามารถควบคุมไดเร็กทอรีได้

คุณสามารถสร้างไดเร็กทอรี "เหนียว" โดยออกคำสั่งต่อไปนี้:

$ chmod +t /directory

เลขฐานแปด

นอกจากการใช้แฟล็กเพื่อกำหนดสิทธิ์ เช่น “r” และ “w” แล้ว คุณยังสามารถใช้ค่าตัวเลขได้อีกด้วย คำสั่ง chmod กำหนดค่าต่อไปนี้ให้กับสิทธิ์:

“r” = 4

“w” = 2

“x” = 1

ดังนั้น เพื่อตั้งค่าไฟล์ให้มีการอ่าน/เขียน/ดำเนินการสำหรับเจ้าของ และอ่าน/ดำเนินการสำหรับคนอื่น ๆ ซึ่งหมายถึง "-rwxr-xr-x" เราคำนวณค่าตัวเลขดังนี้:

rwx = 4+2+1 = 7

rx = 4+1 = 5

ในที่สุดเราก็ออกคำสั่ง:

$ chmod 755 ทดสอบ
$ ls – ทดสอบ
-rwxr-xr-x   1 ยอร์กอส   พนักงาน   21 ก.พ. 24 02:08 ทดสอบ

ฝึกฝนด้วยตัวเองโดยใช้การอนุญาตและค่าตัวเลขที่แตกต่างกันเพื่อทำความเข้าใจ!