ฉันต้องการทำสิ่งต่อไปนี้:
- จำเป็นต้องค้นหาไฟล์และโฟลเดอร์ทั้งหมดที่เขียนได้ทั่วโลกจาก
/
รูท - หากพบว่าฉันต้องตรวจสอบว่ามีการตั้งค่าบิตเหนียวหรือไม่
- หากไม่ได้ติดตั้งบิตกาวไว้ให้ตั้งค่า
เราสามารถหาวิธีแก้ปัญหาบรรทัดคำสั่งสำหรับปัญหาประเภทนี้ได้หรือไม่?
ฉันต้องการทำสิ่งต่อไปนี้:
/
รูทเราสามารถหาวิธีแก้ปัญหาบรรทัดคำสั่งสำหรับปัญหาประเภทนี้ได้หรือไม่?
คำตอบ:
คุณสามารถทำได้โดยใช้find
's -perm -mode
รูปแบบ จากman find
:
-perm - โหมด
โหมดบิตสิทธิ์ทั้งหมดถูกตั้งค่าไว้สำหรับไฟล์ โหมดสัญลักษณ์ได้รับการยอมรับในแบบฟอร์มนี้และโดยปกติจะเป็นวิธีที่ต้องการใช้โหมดนี้ คุณต้องระบุ
u',
g 'หรือ `o' หากคุณใช้โหมดสัญลักษณ์ ดูส่วนของตัวอย่างสำหรับตัวอย่างที่เป็นตัวอย่าง
ดังนั้นในการค้นหาไฟล์ทั้งหมดที่เป็นโลกที่เขียนได้โดยไม่คำนึงถึงสิทธิ์อื่น ๆ ที่พวกเขามีคุณสามารถทำได้:
find / -perm -o+w
ในการตั้งค่าบิตเหนียวใช้-exec
:
find . -perm -o+w -exec chmod +t {} +
คำสั่งนี้ควรค้นหาไดเรกทอรีที่เขียนได้ทั้งหมดในคำสั่งเดียวฉันพบว่าตัวเองใช้มันบ่อยครั้ง นี่มันเป็นคำสั่งที่ดีที่สุด! ;) หวังว่าบริการคุณ:
find / -type d \( -perm -g+w -or -perm -o+w \) -exec ls -adl {} \;
find / -not -type l -perm -o+w
ถ้าคุณไม่ต้องการให้เอาท์พุทรวมชื่อของลิงค์สัญลักษณ์ด้วยเช่นกัน