Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

Linux chmod Recursive:วิธีเปลี่ยนการอนุญาตไฟล์แบบเรียกซ้ำ

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

เป็นไปได้มากว่าคุณเคยพบข้อผิดพลาดต่อไปนี้:

111 [Permission Denied]
"Linux-Screw" [Permission Denied]
"Linux-Screw" [readonly]

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

chmod คืออะไร chmod หรือโหมดเปลี่ยน เปลี่ยนบิตโหมดไฟล์ของไฟล์ที่กำหนด คุณสามารถเปลี่ยนเป็นสัญลักษณ์หรือแทนเลขฐานแปดได้

ไวยากรณ์ chmod

chmod [OPTION] MODE FILE
Or
chmod [OPTION] OCTAL-MODE FILE
Options:
[-c], --changes
Verbose-mode, but only for changes
[-f], --silent, --quiet
Suppress most error messages
[-v], --verbose
Output a diagnostic for every file processed
[-R], --recursive
Change files and directories recursively

นี่คือตัวเลือกที่มีอยู่ โหมดหมายถึงการอ้างอิงเชิงสัญลักษณ์ หากฉันต้องการเพิ่มการอนุญาตที่ปฏิบัติการได้ให้กับไฟล์ ฉันป้อนใน:

chmod +x [FILE]

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

การเรียกซ้ำ chmod

บ่อยครั้งเมื่อคุณทำงานในไดเร็กทอรีโฟลเดอร์ คุณไม่จำเป็นต้องเปลี่ยนการอนุญาตของไฟล์เดียว คุณจะต้องเปลี่ยนการอนุญาตของไฟล์นั้น ไฟล์ทั้งหมดในโฟลเดอร์ปัจจุบัน และไดเรกทอรีย่อยทั้งหมด

โชคดีที่ chmod -R ทำให้เราสามารถเปลี่ยนแปลงไฟล์ทั้งหมดซ้ำๆ ได้

chmod -R 755 *
ls -altrR

แสดงให้เราเห็นต่อไปนี้หลังจากที่เราเปลี่ยนการอนุญาต

Linux chmod Recursive:วิธีเปลี่ยนการอนุญาตไฟล์แบบเรียกซ้ำ

chmod -R

ถ้าอยากรู้ว่าทำไม -altrh เป็นค่าเริ่มต้นและชุดตัวเลือกที่ต้องการ โปรดดูบทความล่าสุดของฉันใน ls .

เอาล่ะเราไปกันเถอะ ด้านบนเราเห็นไดเร็กทอรีและไฟล์ของเรามีการเปลี่ยนแปลงเพื่อให้ตรงกับ 755 , หรือ rwx r-x r-x . ไดเรกทอรีนั้นพร้อมใช้งานสำหรับเราแล้ว เนื่องจากเราอยู่ในกลุ่มนั้น (กลุ่มผู้ใช้) เรายังใช้ได้เนื่องจากเราเป็นผู้ใช้ หากคุณกำลังล้างโฟลเดอร์จากผู้ใช้คนก่อน คุณสามารถเปลี่ยนความเป็นเจ้าของไฟล์ด้วย chown

สิ่งนี้ทำให้พร้อมใช้งานสำหรับคุณในฐานะผู้ใช้ อย่างไรก็ตาม มีปัญหากับ chmod ด้านบน . เมื่อคุณตั้งค่า umask . ของคุณ อย่างเช่น 0022 ค่าปริยาย ไดเร็กทอรี และไฟล์จะแตกต่างกัน ไดเร็กทอรีถูกสร้างขึ้นที่ 755 อนุญาตให้ cd , เปลี่ยนไดเร็กทอรี, คำสั่งทำงานอย่างถูกต้อง ไฟล์ถูกสร้างขึ้นเป็น 644 ซึ่งน้อยกว่าไดเร็กทอรีหนึ่งไฟล์ เนื่องจากไฟล์ปกติไม่ต้องการสิทธิ์ในการดำเนินการ ไดเร็กทอรีทำสำหรับ cd . มาแก้ไขด้วย ค้นหา และ -exec .

chmod วนซ้ำด้วยการค้นหา

find <dir> -type d -exec chmod 755{} \; find <dir> -type f -exec chmod 644 {} \;
Linux chmod Recursive:วิธีเปลี่ยนการอนุญาตไฟล์แบบเรียกซ้ำ

chmod วนซ้ำกับ Find

เราไปกันเลย ทุกอย่างถูกบันทึกและเก็บให้สอดคล้องกับ umask เริ่มต้น ไม่มีไฟล์ปฏิบัติการและไดเร็กทอรีปฏิบัติการ

บทสรุป

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