ตกลงฉันอ่านหน้าคู่มือ "chmod" อีกครั้งสำหรับ Mac OS X, BSD และ Linux และทำการทดลองสองสามครั้ง นี่คือสิ่งที่ฉันเรียนรู้เกี่ยวกับโหมดสัญลักษณ์ มันอาจซับซ้อน แต่ก็คุ้มค่าที่จะเข้าใจ:
- รูปแบบทั่วไปคือข้อ [, ข้อ …] โดยที่:
- ข้อ : = [ugoa] [+ - =] [rwxXstugo]
- [ugoa] ( ใคร ) (ระบุหลายรายการ) หมายถึงตั้งค่าการอนุญาตสำหรับผู้ใช้กลุ่มอื่น ๆ หรือทั้งหมด หากไม่ได้ระบุไว้ค่าเริ่มต้นคือ 'a' แต่umaskจะมีผล
- [+ - =] ( การกระทำ ) (ระบุหนึ่งรายการ) หมายถึง:
- + หมายถึงเพิ่มการอนุญาตที่ระบุให้กับการอนุญาตที่มีผลอยู่แล้ว
- - หมายถึงลบสิทธิ์ที่ระบุออกจากการอนุญาตที่มีผลอยู่แล้ว
- = หมายถึงตั้งค่าการอนุญาตเป็นสิทธิ์ที่ระบุล้างคนอื่น ๆ ทั้งหมด
- [rwxXstugo] (การอนุญาต ) (ระบุหลาย ๆ rwxXst หรือหนึ่งใน ugo) ตั้งค่าการอนุญาตสำหรับผู้ใช้ที่ระบุดังนี้:
- r - อ่าน
- w - เขียน
- x - ดำเนินการ / ค้นหา
- X - รัน / ค้นหาไดเร็กทอรี iff หรือรันไทม์บิตใด ๆ ได้ถูกตั้งค่าแล้ว
- s - suid หรือ sgid
- เหนียว -
- u - คัดลอกสิทธิ์ของผู้ใช้
- g - คัดลอกการอนุญาตของกลุ่ม
- o - คัดลอกการอนุญาตอื่น ๆ
ตัวอย่างเช่นa+x
จะทำให้ทุกคนสามารถเรียกใช้ไฟล์ได้ a+X
จะทำให้ทุกคนเป็นไฟล์ที่สามารถเรียกใช้งานได้ถ้าทุกคนสามารถกระทำได้
a+x
จะทำให้ทุกคนค้นหาไดเรกทอรีได้ a+X
จะทำให้ทุกคนค้นหาไดเรกทอรีได้
ความแตกต่างที่สำคัญระหว่าง BSD และ Linux คือด้วย BSD การกำหนดจะขึ้นอยู่กับการอนุญาตของไฟล์ก่อนที่จะดำเนินการ chmod ในขณะที่ใช้ Linux การกำหนดจะดำเนินการทันทีก่อนที่จะเรียกใช้งานข้อ + X
ดังนั้นด้วย BSD ชุดค่าผสมa-x,a+X
จะลบสิทธิ์การเรียกใช้งาน / ค้นหาจากนั้นสร้างไดเรกทอรีที่ทุกคนสามารถค้นหาได้และสร้างไฟล์ที่ทุกคนสามารถเรียกใช้งานได้ถ้าใคร ๆ
ด้วย Linux a-x,a+X
จะลบการอนุญาตให้เรียกใช้งาน / ค้นหาแล้วทำให้ทุกคนสามารถค้นหาไดเรกทอรีได้ในขณะที่ไม่มีใครสามารถเรียกใช้ไฟล์ได้
นี่คือตัวอย่างที่เป็นรูปธรรม: บนเครื่อง BSD: ไดเรกทอรีไฟล์ที่เรียกใช้งานได้และไฟล์ที่ไม่สามารถเรียกใช้งานได้:
drwxr-x--- 2 falk staff 68 Jul 19 18:01 fee/
-rwxr-x--- 1 falk staff 0 Jul 19 18:01 fie*
-rw-r----- 1 falk staff 0 Jul 19 18:01 foe
สังเกตว่าทั้งไดเรกทอรีและ "fie" นั้นสามารถเรียกใช้ / ค้นหาได้โดยผู้ใช้ แต่ไม่ใช่ผู้อื่น
chmod a-x,a+X *
ตอนนี้เราดำเนินการ ส่วนคำสั่งแรกจะตัดบิตเรียกใช้งาน / ค้นหาจากผู้ใช้ทั้งหมดสำหรับไฟล์ทั้งหมด แต่ส่วนคำสั่งที่สองจะเพิ่มกลับคืนมาสำหรับ "ค่าธรรมเนียม" และ "fie" "ค่าธรรมเนียม" เพราะเป็นไดเรกทอรีและ "เหม่" เพราะมีบิตที่สามารถเรียกใช้งานได้อย่างน้อยหนึ่งรายการเพื่อเริ่มต้นด้วย
drwxr-x--x 2 falk staff 68 Jul 19 18:01 fee/
-rwxr-x--x 1 falk staff 0 Jul 19 18:01 fie*
-rw-r----- 1 falk staff 0 Jul 19 18:01 foe
ฉันมีผลการดำเนินการchmod -x+X
เดียวกัน
สรุป: โซลูชันของ Jak Gibb จะทำงานบน Linux แต่สำหรับ BSD คุณจะต้องทำการผ่านสองครั้ง
ฉันไม่ได้ทดสอบสิ่งนี้กับ SVr4 หรือตัวแปร Unix อื่น ๆ