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

เรียนรู้ Linux chmod: เปลี่ยนสิทธิ์ไฟล์แบบ Recursive อย่างง่ายดาย

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

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

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

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

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

ไวยากรณ์ chmod

chmod [OPTION] MODE FILE Or chmod [OPTION] OCTAL-MODE FILE Options: [-c], --changes Verbose-mode, แต่เฉพาะการเปลี่ยนแปลง [-f], --silent, --quiet ปิดข้อความข้อผิดพลาดส่วนใหญ่ [-v], --verbose สร้างเอาต์พุทการวินิจฉัยสำหรับทุกไฟล์ที่ประมวลผล [-R], --recursive เปลี่ยนไฟล์และไดเรกทอรีแบบ recursive

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

chmod +x [FILE]

และนั่นจะเพิ่มสิทธิ์รัน เราได้ผ่านพื้นฐานแล้ว เราจะแก้โครงสร้างโฟลเดอร์และทำให้พร้อมใช้งานสำหรับเรา

chmod Recursion

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

โชคดีที่ chmod -R อนุญาตให้เราเปลี่ยนไฟล์ทั้งหมดแบบ recursive

chmod -R 755 * ls -altrR

แสดงให้เราเห็นดังนี้หลังจากเราเปลี่ยนสิทธิ์

เรียนรู้ Linux chmod: เปลี่ยนสิทธิ์ไฟล์แบบ Recursive อย่างง่ายดาย

chmod -R

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

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

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

chmod แบบ Recursive ด้วย Find

find  -type d -exec chmod 755{} \; find  -type f -exec chmod 644 {} \;
เรียนรู้ Linux chmod: เปลี่ยนสิทธิ์ไฟล์แบบ Recursive อย่างง่ายดาย

chmod Recursively with Find

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

สรุป

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