วิธีใช้คำสั่ง chmod บน Linux

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

chmod แก้ไขสิทธิ์ของไฟล์

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

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

คุณใช้  chmod คำสั่งเพื่อตั้งค่าสิทธิ์เหล่านี้ lsหากต้องการดูว่าสิทธิ์ได้รับการตั้งค่าในแฟ้มหรือไดเรกทอรีเราสามารถใช้

การดูและทำความเข้าใจสิทธิ์ของไฟล์

เราสามารถใช้-lตัวเลือก (รูปแบบยาว) เพื่อlsแสดงรายการสิทธิ์ของไฟล์สำหรับไฟล์และไดเร็กทอรี

ls -l

ในแต่ละบรรทัดอักขระตัวแรกจะระบุชนิดของรายการที่อยู่ในรายการ ถ้าเป็นเส้นประ ( -) มันคือไฟล์ ถ้าเป็นตัวอักษรแสดงd ว่าเป็นไดเร็กทอรี

อักขระเก้าตัวถัดไปแสดงถึงการตั้งค่าสำหรับสิทธิ์สามชุด

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

มีสามอักขระในแต่ละชุดสิทธิ์ อักขระเป็นตัวบ่งชี้ว่ามีหรือไม่มีสิทธิ์อย่างใดอย่างหนึ่ง เป็นทั้งเส้นประ ( -) หรือตัวอักษร หากอักขระเป็นเส้นประแสดงว่าไม่ได้รับอนุญาต ถ้าตัวละครเป็นr, wหรือxได้รับอนุญาตที่ได้รับ

ตัวอักษรแสดงถึง:

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

ตัวอย่างเช่น:

  •  --- หมายความว่าไม่มีการให้สิทธิ์ใด ๆ เลย
  •  rwxหมายความว่าได้รับอนุญาตเต็มแล้ว ตัวบ่งชี้การอ่านเขียนและดำเนินการมีอยู่ทั้งหมด

ในภาพหน้าจอบรรทัดแรกเริ่มต้นด้วยไฟล์d. บรรทัดนี้หมายถึงไดเร็กทอรีที่เรียกว่า "archive" เจ้าของไดเร็กทอรีคือ "dave" และชื่อของกลุ่มที่ไดเร็กทอรีอยู่นั้นเรียกอีกอย่างว่า "dave"

อักขระสามตัวถัดไปคือสิทธิ์ของผู้ใช้สำหรับไดเร็กทอรีนี้ สิ่งเหล่านี้แสดงว่าเจ้าของมีสิทธิ์เต็มรูปแบบ r, wและxตัวอักษรที่มีอยู่ทั้งหมด ซึ่งหมายความว่าผู้ใช้ dave มีสิทธิ์ในการอ่านเขียนและดำเนินการสำหรับไดเร็กทอรีนั้น

r-xชุดที่สองของตัวละครทั้งสามเป็นสิทธิ์ของกลุ่มเหล่านี้เป็น สิ่งเหล่านี้แสดงให้เห็นว่าสมาชิกของกลุ่ม dave ได้อ่านและดำเนินการสิทธิ์สำหรับไดเร็กทอรีนี้ นั่นหมายความว่าพวกเขาสามารถแสดงรายการไฟล์และเนื้อหาในไดเร็กทอรีและสามารถcd(รัน) ลงในไดเร็กทอรีนั้นได้ พวกเขาไม่มีสิทธิ์ในการเขียนดังนั้นจึงไม่สามารถสร้างแก้ไขหรือลบไฟล์ได้

ชุดสุดท้ายของสามตัวละครก็เช่น  r-xกัน สิทธิ์เหล่านี้ใช้กับผู้ที่ไม่ได้อยู่ภายใต้การอนุญาตสองชุดแรก บุคคลเหล่านี้ (เรียกว่า "คนอื่น") ได้อ่านและดำเนินการสิทธิ์ในไดเรกทอรีนี้

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

สำหรับไฟล์อื่น ๆ ทั้งหมด (นอกเหนือจากไฟล์สคริปต์ mh.sh) เดฟและสมาชิกของกลุ่มเดฟมีคุณสมบัติในการอ่านและเขียนบนไฟล์และอื่น ๆ มีสิทธิ์ในการอ่านเท่านั้น

สำหรับกรณีพิเศษของไฟล์สคริปต์ mh.sh เจ้าของ dave และสมาชิกในกลุ่มได้อ่านเขียนและดำเนินการสิทธิ์ส่วนคนอื่น ๆ จะอ่านและดำเนินการสิทธิ์เท่านั้น

การทำความเข้าใจไวยากรณ์การอนุญาต

ในการใช้chmod กำหนดสิทธิ์เราต้องแจ้งให้ทราบ:

  • ใคร:  เรากำลังตั้งค่าสิทธิ์ให้กับใคร
  • อะไร : เรากำลังเปลี่ยนแปลงอะไร? เรากำลังเพิ่มหรือลบการอนุญาต?
  • ไหน : เรากำลังตั้งค่าการอนุญาตใด

เราใช้ตัวบ่งชี้เพื่อแสดงค่าเหล่านี้และสร้าง "คำสั่งสิทธิ์" สั้น ๆ เช่นu+xโดยที่ "u" หมายถึง "ผู้ใช้" (who), "+" หมายถึงเพิ่ม (อะไร) และ "x" หมายถึงสิทธิ์ในการดำเนินการ (ซึ่ง) .

ค่า“ ใคร” ที่เราใช้ได้คือ:

  • u : ผู้ใช้หมายถึงเจ้าของไฟล์
  • g : กลุ่มหมายถึงสมาชิกของกลุ่มที่ไฟล์อยู่
  • o : อื่น ๆ หมายถึงบุคคลที่ไม่ได้อยู่ภายใต้การควบคุมuและการgอนุญาต
  • a : ทั้งหมดหมายถึงทั้งหมดข้างต้น

หากไม่มีการใช้สิ่งเหล่านี้จะchmodทำงานราวกับว่าaมีการใช้“”

ค่า“ อะไร” ที่เราใช้ได้คือ:

  • - : เครื่องหมายลบ ลบสิทธิ์
  • + : เครื่องหมายบวก ให้สิทธิ์ สิทธิ์ถูกเพิ่มในสิทธิ์ที่มีอยู่ หากคุณต้องการได้รับอนุญาตนี้และเฉพาะชุดสิทธิ์นี้ให้ใช้=ตัวเลือกที่อธิบายไว้ด้านล่าง
  • = : เครื่องหมายเท่ากับ ตั้งค่าการอนุญาตและลบผู้อื่น

ค่า“ ซึ่ง” ที่เราใช้ได้คือ:

  • r : สิทธิ์ในการอ่าน
  • w : สิทธิ์ในการเขียน
  • x : สิทธิ์ในการดำเนินการ

การตั้งค่าและแก้ไขสิทธิ์

สมมติว่าเรามีไฟล์ที่ทุกคนมีสิทธิ์อย่างเต็มที่

ls -l new_ file.txt

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

chmod u = rw, og = r new_file.txt

การใช้โอเปอเรเตอร์“ =” หมายความว่าเราล้างการอนุญาตที่มีอยู่แล้วตั้งค่าตามที่ระบุ

มาตรวจสอบสิทธิ์ใหม่ในไฟล์นี้:

ls -l new_file.txt

สิทธิ์ที่มีอยู่ถูกลบออกและมีการตั้งค่าการอนุญาตใหม่ตามที่เราคาดไว้

วิธีการเพิ่มการอนุญาตโดยไม่ลบการตั้งค่าการอนุญาตที่มีอยู่? เราสามารถทำได้อย่างง่ายดายเช่นกัน

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

ls -l new_script.sh

เราสามารถเพิ่มสิทธิ์ในการดำเนินการสำหรับทุกคนด้วยคำสั่งต่อไปนี้:

chmod a + x new_script.sh

หากเราดูที่สิทธิ์เราจะเห็นว่าตอนนี้สิทธิ์ในการดำเนินการได้รับการอนุญาตให้กับทุกคนและยังคงมีการอนุญาตที่มีอยู่

ls -l new_script.sh

เราสามารถบรรลุสิ่งเดียวกันได้โดยไม่ต้องมี“ a” ในคำสั่ง“ a + x” คำสั่งต่อไปนี้จะได้ผลเช่นกัน

chmod + x new_script.sh

การตั้งค่าสิทธิ์สำหรับไฟล์หลายไฟล์

เราสามารถใช้สิทธิ์กับไฟล์หลายไฟล์พร้อมกันได้

นี่คือไฟล์ในไดเร็กทอรีปัจจุบัน:

ls -l

สมมติว่าเราต้องการลบสิทธิ์ในการเขียนสำหรับผู้ใช้ "อื่น ๆ " ออกจากไฟล์ที่มีนามสกุล ".page" เราสามารถทำได้ด้วยคำสั่งต่อไปนี้:

chmod หรือ * .page

ตรวจสอบว่ามีผลกระทบอะไรบ้าง:

ls -l

อย่างที่เราเห็นการอนุญาตในการอ่านถูกลบออกจากไฟล์“ .page” สำหรับผู้ใช้หมวด“ อื่น ๆ ” ไม่มีไฟล์อื่น ๆ ได้รับผลกระทบ

หากเราต้องการรวมไฟล์ในไดเรกทอรีย่อยเราสามารถใช้-Rตัวเลือก (เรียกซ้ำ) ได้

chmod -R หรือ * .page

ชวเลขตัวเลข

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

ตัวเลขที่คุณสามารถใช้ได้และสิ่งที่แสดงอยู่ที่นี่:

  • 0: (000) ไม่ได้รับอนุญาต
  • 1: (001) ดำเนินการอนุญาต
  • 2: (010) สิทธิ์ในการเขียน
  • 3: (011) เขียนและดำเนินการการอนุญาต
  • 4: (100) สิทธิ์ในการอ่าน
  • 5: (101) อ่านและดำเนินการการอนุญาต
  • 6: (110) สิทธิ์ในการอ่านและเขียน
  • 7: (111) อ่านเขียนและดำเนินการสิทธิ์

แต่ละสิทธิ์สามสิทธิ์จะแสดงด้วยหนึ่งในบิตในฐานสองเทียบเท่ากับเลขฐานสิบ ดังนั้น 5 ซึ่งเป็น 101 ในไบนารีหมายถึงอ่านและดำเนินการ 2 ซึ่งเป็น 010 ในไบนารีจะหมายถึงสิทธิ์ในการเขียน

เมื่อใช้วิธีนี้คุณตั้งค่าการอนุญาตที่คุณต้องการ คุณไม่ได้เพิ่มสิทธิ์เหล่านี้ลงในสิทธิ์ที่มีอยู่ ดังนั้นหากมีสิทธิ์ในการอ่านและเขียนอยู่แล้วคุณจะต้องใช้ 7 (111) เพื่อเพิ่มสิทธิ์ในการดำเนินการ การใช้ 1 (001) จะลบสิทธิ์ในการอ่านและเขียนและเพิ่มสิทธิ์ในการดำเนินการ

มาเพิ่มสิทธิ์ในการอ่านกลับในไฟล์“ .page” สำหรับผู้ใช้หมวดอื่น ๆ เราต้องตั้งค่าสิทธิ์ผู้ใช้และกลุ่มด้วยดังนั้นเราต้องตั้งค่าให้เป็นสิ่งที่มีอยู่แล้ว ผู้ใช้เหล่านี้มีสิทธิ์ในการอ่านและเขียนแล้วซึ่งก็คือ 6 (110) เราต้องการให้ "คนอื่น" อ่านและอนุญาตดังนั้นจึงต้องตั้งค่าเป็น 4 (100)

คำสั่งต่อไปนี้จะทำให้สำเร็จ:

chmod 664 * .page

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

ls -l

ตัวเลือกขั้นสูง

หากคุณอ่าน man page chmodคุณจะเห็นว่ามีตัวเลือกขั้นสูงบางอย่างที่เกี่ยวข้องกับบิต SETUID และ SETGID และการลบที่ จำกัด หรือบิต "เหนียว"

สำหรับ 99% ของกรณีที่คุณต้องการchmodตัวเลือกที่อธิบายไว้ที่นี่จะมีให้คุณครอบคลุม