วิธีควบคุมสิทธิ์ของไฟล์และโฟลเดอร์บนเซิร์ฟเวอร์ Linux

เมื่อเรามีเซิร์ฟเวอร์ NAS ตาม ลินุกซ์หรือระบบปฏิบัติการโดยตรง เช่น Debian or อูบุนตู ซึ่งเราได้ติดตั้งบริการต่างๆ เพื่อเข้าถึงไฟล์และโฟลเดอร์บนเครือข่ายภายในโดยผู้ใช้รายอื่น ควบคุมการอ่าน เขียน และดำเนินการเข้าถึงได้ ไฟล์และโฟลเดอร์ที่เราแชร์เป็นสิ่งสำคัญ เราต้องจำไว้ว่าเมื่อแชร์โฟลเดอร์และไฟล์ของเราผ่าน Samba หรือ FTP เป็นไปได้ว่าการตรวจสอบสิทธิ์ของไคลเอ็นต์อยู่กับผู้ใช้ที่ไม่มีสิทธิ์พิเศษ ดังนั้น เราต้องจัดระเบียบผู้ใช้และกลุ่มให้ถูกต้องเพื่อให้สิทธิ์ที่จำเป็นและ ไม่มีอีกแล้ว

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

ควบคุมสิทธิ์ของไฟล์และโฟลเดอร์บนเซิร์ฟเวอร์ Linux

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

คำสั่ง chmod คืออะไรและมีไว้เพื่ออะไร?

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

ไวยากรณ์สำหรับการใช้ chmod มีดังนี้:

chmod [ตัวดัดแปลง] สิทธิ์ของไฟล์ / ไดเรกทอรี

ขั้นแรก เราจะรันคำสั่ง chmod จากนั้นเราจะสามารถรวมตัวดัดแปลงต่างๆ เช่น “-R” เพื่อทำให้เป็นแบบเรียกซ้ำไปยังโฟลเดอร์และไฟล์ทั้งหมดภายในโฟลเดอร์เดียวกัน จากนั้นเราจะต้องใส่การอนุญาตใหม่ที่ เราต้องการนำไปใช้ และสุดท้าย เราจะใส่พาธสัมบูรณ์หรือแบบสัมพัทธ์ของไฟล์หรือโฟลเดอร์ที่เราต้องการแก้ไขการอนุญาต

รายละเอียดที่สำคัญมากคือ ในบางกรณี จำเป็นอย่างยิ่งที่จะต้องเรียกใช้ chmod ด้วยสิทธิ์ superuser เนื่องจากมีเพียงผู้ใช้ผู้ดูแลระบบของระบบปฏิบัติการเท่านั้นที่สามารถเปลี่ยนการอนุญาตได้ ซึ่งสามารถทำได้โดยการเข้าสู่ระบบในฐานะ root หรือโดยตรงโดยใช้คำสั่ง "sudo" ที่เป็นที่นิยมเพื่อโปรโมต superuser ชั่วคราวด้วยคำสั่งที่จะดำเนินการ

ตัวอย่างการใช้ chmod เพื่อเปลี่ยนการอนุญาต

สิ่งแรกที่เราจะทำคือสร้างโฟลเดอร์และไฟล์ใหม่ภายในนั้น โดยมีเป้าหมายให้คุณฝึกฝนกับโฟลเดอร์และไฟล์เหล่านี้ และอย่าแก้ไขการอนุญาตเริ่มต้นของโฟลเดอร์ที่มีอยู่แล้วในระบบปฏิบัติการของคุณ ด้วยเหตุผลนี้ เรากำลังเตรียมการสำหรับการทดสอบให้ประสบผลสำเร็จ

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

กำลังเตรียมระบบของเราสำหรับการทดสอบ

สิ่งแรกที่เราจะทำคือ สร้างโฟลเดอร์ในไดเร็กทอรีปัจจุบันของผู้ใช้แต่ละคน มักจะอยู่ใน / home / username

mkdir Carpetathis article

ต่อมาเราจะย้ายไปยังโฟลเดอร์นี้และสร้างไฟล์:

cd Carpetathis article

สัมผัสไฟล์ทดสอบ

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

cd ..

ด้วยเหตุนี้ เราจึงทำให้ระบบของเราพร้อมที่จะเริ่มทดสอบการเปลี่ยนแปลงการอนุญาต

รับข้อมูลเกี่ยวกับไฟล์และโฟลเดอร์

หากเราต้องการแสดงรายการไฟล์ที่มีอยู่ในโฟลเดอร์ เราจะต้องเขียนคำสั่งต่อไปนี้เท่านั้น:

ls

ด้วยเหตุนี้เราจึงได้เฉพาะชื่อไฟล์หรือโฟลเดอร์ที่เราอยู่บนเส้นทางเท่านั้น เพื่อให้ได้รายละเอียดมากขึ้น เราจะต้องเขียนสิ่งต่อไปนี้:

ls -l

เราได้ดำเนินการคำสั่งนี้บนเซิร์ฟเวอร์ของเราแล้ว คุณสามารถดูว่าผลลัพธ์เป็นอย่างไร:

คำสั่งนี้ให้ข้อมูลต่อไปนี้ (เรียงจากซ้ายไปขวา):

  • ประเภทไฟล์ (ไฟล์แสดง "-" และไดเร็กทอรีแสดง "d")
  • สิทธิ์ในการอ่าน เขียน และดำเนินการ ทั้งสำหรับผู้ใช้ กลุ่ม และอื่นๆ
  • ผู้ใช้เจ้าของ.
  • กลุ่มที่เป็นเจ้าของไฟล์
  • ขนาด
  • วันที่แก้ไขล่าสุด
  • Name

เมื่อเราสร้างโฟลเดอร์และไฟล์แล้ว เช่นเดียวกับที่เราได้เห็นผลลัพธ์ของคำสั่ง «ls -l» เราจะตีความสิทธิ์ที่ไฟล์หรือโฟลเดอร์มี

ตีความสิทธิ์ที่ไฟล์หรือโฟลเดอร์มี

ก่อนหน้านี้คุณเคยเห็นว่าไฟล์ต่าง ๆ มีสิทธิ์เหล่านี้:

drwxr-xr-x 3 bron bron 4096 may 6 13:19 Descargas

ในสตริงที่เสนอนี้ เราจะเห็นว่า ในแต่ละไฟล์หรือโฟลเดอร์ จะมีชุดตัวอักษรเป็นลำดับแรก นี่คือสิทธิ์ที่ไฟล์มีและอ่านได้ดังนี้:

otorgar-permisos-fichero-o-carpeta-ลินุกซ์

ในตัวอย่างก่อนหน้านี้ เรามีสิทธิ์ "drwxr-xr-x" ซึ่งหมายถึงสิ่งต่อไปนี้:

  • d: ไดเรกทอรี
  • rwx: สิทธิ์ในการอ่าน เขียน และดำเนินการสำหรับผู้ใช้ที่เป็นเจ้าของไดเร็กทอรี
  • rx: สิทธิ์ในการอ่านและดำเนินการสำหรับกลุ่มที่เป็นเจ้าของไดเร็กทอรี
  • rx: อ่านและดำเนินการสิทธิ์สำหรับผู้อื่นในไดเร็กทอรี

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

-rwx------

นั่นคือ เราสามารถให้สิทธิ์กับบทบาทต่อไปนี้:

  • ผู้ใช้เจ้าของ.
  • กลุ่มที่เจ้าของเป็นเจ้าของ
  • ผู้ใช้ทีมที่เหลือ

วิธีเปลี่ยนการอนุญาตไฟล์และโฟลเดอร์

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

ตัวอักษร

หากเราจะใช้ตัวอักษรเพื่อเพิ่มหรือลบการอนุญาตจากโฟลเดอร์หรือไฟล์ เราต้องคำนึงถึงบทบาท สัญลักษณ์ และการอนุญาต

บทบาทมีสามประเภท:

  • คุณ: ผู้ใช้
  • g: กลุ่ม
  • หรือ: อื่นๆ
  • a: ทั้งหมด (ทั้งหมด) หากคุณต้องการใช้การอนุญาตเดียวกันกับผู้ใช้ กลุ่ม และอื่นๆ ให้ใช้ “a” เพื่อประหยัดเวลา

สัญลักษณ์สองประเภท:

  • +: เพิ่มการอนุญาต
  • -: ลบการอนุญาต
  • =: ระบุชุดการอนุญาต

ใบอนุญาตสามประเภท:

  • ร: การอ่าน
  • w: การเขียน
  • x: การดำเนินการ

ต่อไป เราขอเสนอชุดตัวอย่างเพื่อให้คุณเห็นว่าเรากำลังพูดถึงอะไร:

ให้สิทธิ์การอ่าน เขียน และดำเนินการเต็มรูปแบบแก่ทุกบทบาท ทั้งผู้ใช้ กลุ่ม และอื่นๆ:

chmod ugo+rwx archivoDePrueba

ลบสิทธิ์ในการอ่าน เขียน และดำเนินการจากผู้ใช้รายอื่น:

chmod o-rwx archivoDePrueba

ในท้ายที่สุด ทุกสิ่งทุกอย่างอยู่ในการรวมบทบาท สัญลักษณ์ และการอนุญาต ขึ้นอยู่กับความต้องการที่เรามี

ฐานแปดโดยใช้ตัวเลข

พื้นที่ chmod คำสั่งยังเข้ากันได้กับระบบการตั้งชื่ออื่นที่เราจะสอนคุณและที่ยึดตามฐานแปด

ลองนึกภาพว่าการอนุญาตของเจ้าของ (rwx) ถูกระบุด้วย 0 และ 1 นั่นคือถ้าตัวอย่างเช่นเราต้องการให้สิทธิ์ในการอ่านและเขียนเท่านั้น (และไม่ดำเนินการอนุญาต) มันจะเป็น: 110 หากเราต้องการเพียงสิทธิ์การอ่านก็จะเป็น เป็น: 100

ดังนั้น โดยคำนึงถึงความเป็นไปได้ที่มีอยู่ทั้งหมด เราได้รับค่าต่อไปนี้:

  • 0 0 0:0
  • 0 0 1:1
  • 0 1 0:2
  • 0 1 1:3
  • 1 0 0:4
  • 1 0 1:5
  • 1 1 0:6
  • 1 1 1:7

นั่นคือ เป็นสิ่งที่สามารถอนุมานได้ทั้งกับผู้ใช้ กลุ่มและอื่น ๆ

รูปแบบของคำสั่งจะเป็นดังนี้:

chmod xxx archivoDePrueba

โดยที่ x จะถูกเปลี่ยนเป็นตัวเลขขึ้นอยู่กับการอนุญาตที่ได้รับมอบหมาย

ตัวอย่างเช่น หากเราต้องการให้สิทธิ์แก่เจ้าของแบบเต็มและปล่อยให้อีกสองบทบาท (กลุ่มและอื่น ๆ ) โดยไม่ได้รับอนุญาต คำสั่งจะเป็น:

chmod 700 archivoDePrueba

หากเราต้องการให้สิทธิ์การอ่านและเขียนแก่บทบาททั้งหมด มันจะเป็น:

chmod 666 archivoDePrueba

ด้วยสองวิธีง่ายๆ เหล่านี้ เราสามารถตั้งค่าการอนุญาตไฟล์และโฟลเดอร์บนคอมพิวเตอร์ Linux ของเรา นอกจากนี้ เราจะมีคำสั่ง ls -l ที่ปลายนิ้วของเราเพื่อรับข้อมูลแบบเรียลไทม์เกี่ยวกับไฟล์และโฟลเดอร์ในระบบ เราขอแนะนำให้คุณไปที่คู่มือ chmod อย่างเป็นทางการสำหรับ Linux สำหรับสิ่งนี้ เราจะดำเนินการสิ่งต่อไปนี้บนคอนโซล:

man chmod

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