<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
chmod – เปลี่ยนโหมดไฟล์
ในการเปลี่ยนโหมด (การอนุญาต) ของไฟล์หรือไดเร็กทอรี chmod ใช้คำสั่ง. โปรดทราบว่ามีเพียงเจ้าของไฟล์หรือผู้ใช้ระดับสูงเท่านั้นที่สามารถเปลี่ยนโหมดของไฟล์หรือไดเร็กทอรีได้ chmod สนับสนุนสองวิธีที่แตกต่างกันในการระบุการเปลี่ยนแปลงโหมด: การแสดงเลขฐานแปดหรือการแสดงสัญลักษณ์ เราจะครอบคลุมการแสดงเลขฐานแปดก่อน
Heck คืออะไร Octal?
เลขฐานแปด (ฐาน 8) และลูกพี่ลูกน้องของมัน เลขฐานสิบหก (ฐาน 16) เป็นระบบตัวเลขที่มักใช้แสดงตัวเลขบนคอมพิวเตอร์ มนุษย์เราเนื่องจากการที่เรา (หรืออย่างน้อยที่สุดของเรา) เกิดมาพร้อมกับสิบนิ้ว จึงนับโดยใช้ระบบเลขฐาน 10 ในทางกลับกัน คอมพิวเตอร์ถือกำเนิดขึ้นด้วยนิ้วเดียว ดังนั้นจึงนับทั้งหมดเป็นเลขฐานสอง (ฐาน 2) ระบบตัวเลขของพวกเขามีเพียงสองตัวเลขคือ 0 และ 1 ดังนั้นในเลขฐานสอง การนับจะมีลักษณะดังนี้:
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011...
ในฐานแปด การนับทำได้ด้วยเลขศูนย์ถึงเจ็ด เช่น 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21...
การนับเลขฐานสิบหกใช้ตัวเลขศูนย์ถึงเก้าบวกตัวอักษร "A" ถึง "F":
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13...
แม้ว่าเราจะมองเห็นความหมายเป็นเลขฐานสอง (เนื่องจากคอมพิวเตอร์มีนิ้วเดียว) เลขฐานแปดและเลขฐานสิบหกมีไว้ทำอะไร คำตอบอยู่ที่ความสะดวกของมนุษย์ หลายครั้ง ข้อมูลส่วนเล็ก ๆ จะแสดงบนคอมพิวเตอร์เป็น รูปแบบบิต. ยกตัวอย่างสี RGB ในหน้าจอคอมพิวเตอร์ส่วนใหญ่ แต่ละพิกเซลประกอบด้วยองค์ประกอบสามสี ได้แก่ สีแดง 24 บิต สีเขียว XNUMX บิต และสีน้ำเงิน XNUMX บิต สีน้ำเงินกลางที่น่ารักจะเป็นตัวเลข XNUMX หลัก:
010000110110111111001101
คุณต้องการอ่านและเขียนตัวเลขเหล่านั้นทั้งวันอย่างไร? ฉันไม่ได้คิดอย่างนั้น นี่คือที่ที่ระบบตัวเลขอื่นจะช่วยได้ ตัวเลขแต่ละตัวในเลขฐานสิบหกหมายถึงเลขฐานสองสี่หลัก ในฐานแปด แต่ละหลักแทนเลขฐานสองสามหลัก ดังนั้นสีน้ำเงินกลาง 24 หลักของเราจึงสามารถย่อเป็นเลขฐานสิบหกหกหลักได้:
436FCD
เนื่องจากตัวเลขในเลขฐานสิบหก "เรียงกัน" กับบิตในเลขฐานสอง เราจะเห็นได้ว่าองค์ประกอบสีแดงของสีของเราคือ 43, 6F สีเขียว และซีดีสีน้ำเงิน
ทุกวันนี้ สัญกรณ์ฐานสิบหก (มักเรียกว่า "ฐานสิบหก") เป็นเรื่องธรรมดามากกว่าเลขฐานแปด แต่อย่างที่เราจะได้เห็นกันในไม่ช้า ความสามารถของเลขฐานแปดในการแสดงเลขฐานสองสามบิตจะมีประโยชน์มาก...
ด้วยสัญกรณ์ฐานแปด เราใช้เลขฐานแปดเพื่อกำหนดรูปแบบของการอนุญาตที่ต้องการ เนื่องจากแต่ละหลักในเลขฐานแปดแสดงถึงเลขฐานสองสามหลัก ค่านี้จึงจับคู่กับ
แบบแผนที่ใช้ในการจัดเก็บโหมดไฟล์ ตารางนี้แสดงสิ่งที่เราหมายถึง:
ตารางที่ 9-4: โหมดไฟล์ในไบนารีและ Octal
Octal | เลขฐานสอง | โหมดไฟล์ |
0 | 000 | --- |
1 | 001 | --NS |
2 | 010 | -ใน- |
3 | 011 | -wx |
4 | 100 | NS-- |
5 | 101 | rx |
6 | 110 | ร- |
7 | 111 | rwx |
โดยใช้เลขฐานแปดสามตัว เราสามารถตั้งค่าโหมดไฟล์สำหรับเจ้าของ เจ้าของกลุ่ม และ
โลก:
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw-rw-r-- 1 ฉัน ฉัน 0 2016-03-06 14:52 foo.txt [me@linuxbox ~]$ chmod 600 fo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw------- 1 ฉัน ฉัน 0 2016-03-06 14:52 foo.txt
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw-rw-r-- 1 ฉัน ฉัน 0 2016-03-06 14:52 foo.txt [me@linuxbox ~]$ chmod 600 fo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw------- 1 ฉัน ฉัน 0 2016-03-06 14:52 foo.txt
ด้วยการส่งอาร์กิวเมนต์ "600" เราสามารถตั้งค่าการอนุญาตของเจ้าของในการอ่านและเขียนในขณะที่ลบการอนุญาตทั้งหมดออกจากเจ้าของกลุ่มและโลก แม้ว่าการแมปฐานแปดใหม่เป็นไบนารีอาจดูไม่สะดวก แต่โดยปกติคุณจะต้องใช้ตัวเลขทั่วไปสองสามอย่างเท่านั้น: 7 (rwx), 6 (ร-), 5 (rx), 4 (NS--) และ 0 (---).
chmod ยังสนับสนุนสัญลักษณ์สำหรับระบุโหมดไฟล์ สัญกรณ์สัญลักษณ์แบ่งออกเป็นสามส่วน: การเปลี่ยนแปลงจะส่งผลต่อใคร การดำเนินการใดที่จะดำเนินการ และการตั้งค่าการอนุญาตใด ในการระบุว่าใครได้รับผลกระทบ ให้ใช้ตัวอักษร “u”, “g”, “o” และ “a” ร่วมกันดังนี้:
ตารางที่ 9-5: chmod Symbolic Notation
สัญลักษณ์ความหมาย
สัญลักษณ์ความหมาย
u ย่อมาจาก “user” แต่หมายถึงเจ้าของไฟล์หรือไดเร็กทอรี
ก. เจ้าของกลุ่ม.
o ย่อมาจาก "other" แต่หมายถึงโลก
สั้นสำหรับ "ทั้งหมด" การรวมกันของ "u", "g" และ "o"
หากไม่มีการระบุอักขระ ระบบจะถือว่า "ทั้งหมด" การดำเนินการอาจเป็นเครื่องหมาย "+" ระบุว่าต้องเพิ่มการอนุญาต "-" ระบุว่าต้องถอดการอนุญาตหรือ "=" ระบุว่าจะใช้เฉพาะการอนุญาตที่ระบุและอื่น ๆ ทั้งหมด จะถูกลบออก
สิทธิ์จะถูกระบุด้วยอักขระ "r", "w" และ "x" ต่อไปนี้คือตัวอย่างบางส่วนของสัญกรณ์สัญลักษณ์:
ตารางที่ 9-6: chmod Symbolic Notation Examples
ความหมายสัญกรณ์
ความหมายสัญกรณ์
u+x เพิ่มการอนุญาตดำเนินการสำหรับเจ้าของ
ux ลบการอนุญาตดำเนินการจากเจ้าของ
+x เพิ่มการอนุญาตดำเนินการสำหรับเจ้าของ กลุ่ม และโลก
เทียบเท่ากับ ก+x.
o-rw ลบสิทธิ์ในการอ่านและเขียนจากใครก็ตามที่ไม่ใช่เจ้าของและเจ้าของกลุ่ม
go=rw ตั้งค่าให้เจ้าของกลุ่มและใครก็ตามที่ไม่ใช่เจ้าของกลุ่มสามารถอ่านและเขียนได้ หากเจ้าของกลุ่มหรือโลกเคยมีสิทธิ์ในการดำเนินการ พวกเขาจะถูกลบออก
u+x,go=rx เพิ่มการอนุญาตดำเนินการสำหรับเจ้าของและตั้งค่าการอนุญาตสำหรับกลุ่มและอื่น ๆ เพื่ออ่านและดำเนินการ ข้อมูลจำเพาะหลายรายการอาจคั่นด้วยเครื่องหมายจุลภาค
บางคนชอบใช้สัญกรณ์ฐานแปด บางคนชอบสัญลักษณ์มาก สัญกรณ์สัญลักษณ์มีข้อดีที่ทำให้คุณสามารถตั้งค่าแอตทริบิวต์เดียวโดยไม่รบกวนแอตทริบิวต์อื่นๆ
ลองดูที่ chmod man page สำหรับรายละเอียดเพิ่มเติมและรายการตัวเลือก คำเตือนเกี่ยวกับตัวเลือก “--recursive”: มันทำงานทั้งกับไฟล์และไดเร็กทอรี ดังนั้นจึงไม่มีประโยชน์อย่างที่ใคร ๆ ก็หวัง เนื่องจากเราแทบไม่ต้องการให้ไฟล์และไดเร็กทอรีมีภารกิจเหมือนกัน