Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

ทำความเข้าใจ chmod 777: ความหมายและผลกระทบต่อสิทธิ์ Linux

บทความนี้สำรวจ chmod 777 คำสั่ง Linux ที่ใช้ให้สิทธิ์ ทั้งหมด แก่ผู้ใช้ กลุ่ม และผู้อื่น

ในฐานะผู้ใช้ Linux ใหม่ นักพัฒนาเว็บ หรือผู้ดูแลระบบ คุณอาจเคยได้รับคำสั่งให้พิมพ์:

chmod 777 /path/to/file/or/folder

…ลงใน Linux shell ของคุณในบางจุด

เมื่อใดก็ตามที่คุณรันคำสั่งบนระบบของคุณ (โดยเฉพาะในฐานะ root!) คุณควรรู้เสมอว่าพวกมันทำอะไรอยู่ ดังนั้น chmod 777 จริงๆ แล้วคืออะไร?

สิทธิ์ใน Linux

ทำความเข้าใจ chmod 777: ความหมายและผลกระทบต่อสิทธิ์ Linux

ls – l command

ข้างต้นเป็นตัวอย่างการรัน:

ls -l

คำสั่ง ซึ่งจะแสดงรายการเนื้อหาไดเรกทอรีปัจจุบันใน รูปแบบรายการยาว, ซึ่งแสดงสิทธิ์และวันที่แก้ไขสำหรับไฟล์ที่แสดงรายการ

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

คอลัมน์ที่หนึ่ง สาม และสี่ มีข้อมูลที่เกี่ยวข้องกับสิทธิ์ ซึ่งจะถูกอ้างอิงในบทความนี้

โฟลเดอร์ที่แสดงในภาพหน้าจออยู่ในไดเรกทอรีโฮมของผู้ใช้ linuxscrew และทั้งหมดมีสิทธิ์

drwxr-xr-x 

พร้อมทั้ง owner และ group ของผู้ใช้ linuxscrew ที่เป็นเจ้าของ

drwxr-xr-x มีข้อมูล 4 ส่วน 3 ส่วนเกี่ยวกับสิทธิ์:

d rwx r-x r-x
เป็นไดเรกทอรี Owner สามารถ Read, Write, eXecute Group สามารถ Read, eXecute Others สามารถ Read, eXecute
  • ตัวอักษรแรกแสดง ประเภทไฟล์ – หากเป็น d เป็นไดเรกทอรี หากเป็น – เป็นไฟล์ทั่วไป
  • ตัวอักษรที่ 2-4 มีสิทธิ์สำหรับ ผู้ใช้
  • ตัวอักษรที่ 5-7 มีสิทธิ์สำหรับ กลุ่ม
  • ตัวอักษรที่ 8-10 มีสิทธิ์สำหรับ ผู้อื่น

ตัวอักษรในแต่ละบล็อกมีความหมายดังนี้:

  • '-' ปฏิเสธสิทธิ์
  • 'r' สิทธิ์อ่าน
  • 'w' สิทธิ์เขียน
  • 'x' สิทธิ์รัน

มีค่าพิเศษบางอย่างที่ตัวอักษร eXecute สามารถรับได้:

  • 's' setuid bit อยู่ในสิทธิ์ ผู้ใช้ หรือ กลุ่ม ผู้ใช้ที่สามารถรันไฟล์ได้จะรันด้วยสิทธิ์ของเจ้าของไฟล์ และ/หรือกลุ่มของไฟล์ มันหมายถึง x ถูกตั้งค่า ทำให้ไฟล์รันได้
  • 'S' เหมือน 's' แต่ไฟล์ไม่ได้รันได้
  • 't' Sticky bit อยู่ในสิทธิ์ ผู้อื่น ทำให้ไฟล์ sticky – เฉพาะเจ้าของเท่านั้นที่สามารถเปลี่ยนชื่อหรือลบไฟล์หรือไฟล์ภายในได้ กลุ่มและผู้อื่นไม่สามารถ! มันยังหมายถึง x ถูกตั้งค่า ทำให้ไฟล์รันได้
  • 'T' เหมือน 't' แต่ไฟล์ไม่ได้รันได้

เพื่อความสมบูรณ์ ประเภทไฟล์ที่แตกต่างกันสามารถครอบครองพื้นที่ตัวอักษรแรกได้:

  • '-' ไฟล์ทั่วไป
  • 'b' ไฟล์พิเศษบล็อก
  • 'c' ไฟล์พิเศษตัวอักษร
  • 'C' ไฟล์ประสิทธิภาพสูง ("contiguous data")
  • 'd' ไดเรกทอรี
  • 'D' door (Solaris 2.5 ขึ้นไป)
  • 'l' symbolic link
  • 'M' ไฟล์ออฟไลน์ ("migrated") (Cray DMF)
  • 'n' ไฟล์พิเศษเครือข่าย (HP-UX)
  • 'p' FIFO (named pipe)
  • 'P' port (Solaris 10 ขึ้นไป)
  • 's' socket
  • '?' ประเภทไฟล์อื่นๆ

ความหมายของ 777

เพื่อให้การพิมพ์เร็วขึ้นเมื่อกำหนดสิทธิ์ ตัวเลขสามารถใช้แทนการผสมผสานของตัวอักษรที่แสดงข้างต้น:

  • 7 สิทธิ์ทั้งหมด
  • 6 อ่านและเขียน
  • 5 อ่านและรัน
  • 4 อ่านอย่างเดียว
  • 3 รันและเขียน
  • 2 เขียนอย่างเดียว
  • 1 รันอย่างเดียว
  • 0 ไม่มีสิทธิ์

ดังนั้น เพื่อให้ สิทธิ์ทั้งหมด แก่ ผู้ใช้, กลุ่ม, และ ผู้อื่น, เราจะต้องกำหนดสิทธิ์ 777

คำสั่ง chmod

คำสั่ง chmod (Change Mode) ให้คุณนำสิทธิ์ไปใช้กับไฟล์

chmod 777

ดังนั้น การรัน:

chmod 777 /path/to/file/or/folder

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

chmod -R 777 /path/to/file/or/folder

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

ตอนนี้คุณรู้แล้ว!