หลังจากได้รับคำตอบของคำถามที่นี่และทำวิจัยเกี่ยวกับผลลัพธ์ฉันพบบทความที่อธิบายได้ดีมาก ฉันต้องการแบ่งปันบางส่วนของบทความนี้ที่นี่เพื่ออ้างอิงในอนาคต
การดูการอนุญาต
เพื่อที่จะใช้chmod
ในการเปลี่ยนการอนุญาตของไฟล์หรือไดเรกทอรีคุณจะต้องรู้ก่อนว่าโหมดการเข้าถึงปัจจุบันคืออะไร คุณสามารถดูเนื้อหาของไดเรกทอรีในเทอร์มินัลโดยcd
ไปที่ไดเรกทอรีนั้นแล้วใช้:
$ ls -l
-l
สวิทช์เป็นสิ่งสำคัญเพราะใช้ls
โดยไม่ได้จะแสดงเฉพาะชื่อของไฟล์หรือโฟลเดอร์ในไดเรกทอรี
ด้านล่างเป็นตัวอย่างของการใช้งานls -l
ในไดเรกทอรีบ้านของฉัน:
total 128
drwxr-xr-x 2 peter users 4096 Jul 5 21:03 Desktop
drwxr-xr-x 6 peter users 4096 Jul 5 17:37 Documents
drwxr-xr-x 2 peter users 4096 Jul 5 13:45 Downloads
drwxr-xr-x 2 peter users 4096 Jun 24 03:36 Movies
drwxr-xr-x 2 peter users 4096 Jun 24 03:38 Music
drwxr-xr-x 2 peter users 4096 Jun 26 00:09 Pictures
-rw-r--r-- 1 peter users 354 Jul 6 17:15 chmodtest
ความหมายของคอลัมน์
คอลัมน์แรกคือประเภทของแต่ละไฟล์:
-
หมายถึงไฟล์ปกติ
d
หมายถึงไดเรกทอรีเช่นโฟลเดอร์ที่มีไฟล์หรือโฟลเดอร์อื่น ๆ
p
หมายถึงไปป์ที่มีชื่อ (aka FIFO)
l
หมายถึงลิงค์สัญลักษณ์
ตัวอักษรหลังจากนั้นคือการอนุญาตคอลัมน์แรกนี้คือสิ่งที่เราจะให้ความสนใจมากที่สุดตัวที่สองคือจำนวนลิงก์ที่มีในไฟล์เราสามารถเพิกเฉยได้อย่างปลอดภัย คอลัมน์ที่สามมีสองค่า / ชื่อ: คอลัมน์แรก (ในตัวอย่าง 'peter') ของฉันคือชื่อของผู้ใช้ที่เป็นเจ้าของไฟล์ ค่าที่สอง ('ผู้ใช้' ในตัวอย่าง) คือกลุ่มที่เจ้าของเป็นเจ้าของ (อ่านเพิ่มเติมเกี่ยวกับกลุ่ม)
คอลัมน์ถัดไปคือขนาดของไฟล์หรือไดเรกทอรีเป็นไบต์และข้อมูลหลังจากนั้นคือวันที่และเวลาที่ไฟล์หรือไดเรกทอรีถูกแก้ไขครั้งล่าสุดและแน่นอนชื่อของไฟล์หรือไดเรกทอรี
สิทธิ์หมายถึงอะไร
ตัวอักษรสามตัวแรกหลังจากตัวแรก-
หรือตัวอักษรd
เป็นสิทธิ์ที่เจ้าของมี อักษรสามตัวถัดไปคือการอนุญาตที่ใช้กับกลุ่ม ตัวอักษรสามตัวสุดท้ายคือสิทธิ์ที่ใช้กับทุกคน
ชุดของสามตัวอักษรแต่ละตัวจะถูกสร้างขึ้นจากและr
w
อยู่ในตำแหน่งที่หนึ่งเสมออยู่ในตำแหน่งที่สองเสมอและอยู่ในตำแหน่งที่สามเสมอ คือสิทธิ์ในการอ่านเป็นสิทธิ์ในการเขียนและเป็นสิทธิ์ดำเนินการ หากมีเครื่องหมายยัติภังค์ ( ) แทนตัวอักษรตัวใดตัวหนึ่งนั่นหมายถึงไม่ได้รับอนุญาตและหากมีจดหมายนั้นอยู่ก็จะได้รับอนุญาตx
r
w
x
r
w
x
-
โฟลเดอร์
ในกรณีของโฟลเดอร์บิตโหมดสามารถตีความได้ดังนี้
r
(อ่าน) หมายถึงความสามารถในการอ่านสารบัญของไดเรกทอรีที่กำหนด
w
(เขียน) ย่อมาจากความสามารถในการเขียนสารบัญของไดเรกทอรีที่กำหนด (สร้างไฟล์ใหม่โฟลเดอร์เปลี่ยนชื่อลบไฟล์ที่มีอยู่โฟลเดอร์) ถ้าหากตั้งบิตดำเนินการ มิฉะนั้นการอนุญาตนี้จะไม่มีความหมาย
x
(ดำเนินการ) หมายถึงความสามารถในการป้อนไดเรกทอรีที่กำหนดด้วยซีดีคำสั่งและการเข้าถึงไฟล์โฟลเดอร์ในไดเรกทอรีนั้น
การเปลี่ยนการอนุญาตโดยใช้คำสั่ง chmod
chmod
เป็นคำสั่งใน Linux และระบบปฏิบัติการแบบ Unix อนุญาตให้คุณเปลี่ยนการอนุญาต (หรือโหมดการเข้าถึง) ของไฟล์หรือไดเรกทอรี
คุณสามารถแก้ไขการอนุญาตได้สองวิธี: - แบบข้อความ - อิงchmod
ตัวเลขchmod
วิธีข้อความ
ในการเปลี่ยนโหมดการอนุญาตหรือการเข้าถึงไฟล์เราจะใช้คำสั่ง chmod ในเทอร์มินัล ด้านล่างเป็นโครงสร้างทั่วไปของคำสั่ง:
chmod who=permissions filename
ที่ใดมีตัวอักษรจากช่วงและแต่ละคนมีความหมายว่าคุณจะได้รับอนุญาตให้ พวกเขามีดังนี้:
u - The user that owns the file.
g - The group the file belongs to.
o - The other users i.e. everyone else.
a - all of the above - use this instead of having to type ugo.
สิทธิ์ที่เป็นเช่นเดียวกับที่กล่าวไว้แล้ว ( r
, w
และx
)
คำสั่ง chmod ให้เราเพิ่มและลบการอนุญาตจากชุดที่มีอยู่โดยใช้ + หรือ - แทน = สิ่งนี้แตกต่างจากคำสั่งข้างต้นซึ่งจำเป็นต้องเขียนสิทธิ์ใหม่ (เช่นเปลี่ยนการอนุญาตจากr--
เป็นrw-
คุณยังต้องรวมr
และw
หลังจาก=
ใช้chmod
คำสั่งด้วย) หากคุณพลาดr
มันจะนำr
สิทธิ์ดังกล่าวไปใช้ พวกเขากำลังเขียนใหม่ด้วย = การใช้ + และ - หลีกเลี่ยงสิ่งนี้โดยการเพิ่มหรือนำออกจากชุดการอนุญาตปัจจุบัน)
วิธีการตัวเลข
chmod
ยังสามารถตั้งค่าการอนุญาตโดยใช้หมายเลข
การใช้ตัวเลขเป็นวิธีการอื่นที่ช่วยให้คุณแก้ไขการอนุญาตสำหรับเจ้าของทั้งสามกลุ่มและอื่น ๆ ในเวลาเดียวกัน โครงสร้างพื้นฐานของรหัสนี้คือ:
chmod xxx file/directory
โดยที่ xxx คือตัวเลข 3 หลักซึ่งแต่ละหลักสามารถเป็นอะไรก็ได้ตั้งแต่ 1 ถึง 7 ตัวเลขแรกนำไปใช้กับการอนุญาตสำหรับเจ้าของหลักที่สองใช้กับการอนุญาตสำหรับกลุ่มและหลักที่สามนำไปใช้กับการอนุญาตสำหรับผู้อื่นทั้งหมด
ในรูปแบบตัวเลขนี้ค่า r, w และ x มีค่าหมายเลขของตัวเอง:
r=4
w=2
x=1
ในการหาตัวเลขสามหลักคุณต้องพิจารณาว่าการอนุญาตใดที่คุณต้องการให้เจ้าของกลุ่มและผู้ใช้มีอยู่จากนั้นจึงรวมค่าทั้งหมด ตัวอย่างเช่นสมมติว่าฉันต้องการให้สิทธิ์การอ่านและเขียนแก่เจ้าของไดเรกทอรีและฉันต้องการจัดกลุ่มและคนอื่น ๆ ทุกคนให้อ่านและดำเนินการตามสิทธิ์ ฉันจะคิดค่าตัวเลขดังนี้:
Owner: rwx = 4+2+1=7
Group: r-x = 4+0+1=5 (or just 4+1=5)
Other: r-x = 4+0+1=5 (or just 4+1=5)
Final number = 755
$ chmod 755 filename
นี่คือเทียบเท่ากับการใช้ดังต่อไปนี้:
chmod u=rwx filename
chmod go=rx filename
โฟลเดอร์ / ไดเรกทอรีส่วนใหญ่ตั้งค่าเป็น 755 เพื่อให้การอ่านและการเขียนและการดำเนินการกับเจ้าของ แต่ปฏิเสธการเขียนให้กับคนอื่น ๆ และโดยปกติแล้วไฟล์เป็น 644 เพื่อให้การอ่านและการเขียนสำหรับเจ้าของ แต่เพียงแค่อ่านให้ทุกคน บันทึกการขาดสิทธิ์ x กับไฟล์ที่ไม่สามารถใช้งานได้ - เป็นข้อตกลงเดียวกันที่นี่