यहां कोई मैजिक बुलेट नहीं है। अनुमतियाँ जानकारी ले जाती हैं जो हमेशा निरर्थक नहीं होती हैं।
यदि आपने इसे सिस्टम डायरेक्टरी में किया है, तो आपका सिस्टम बहुत खराब स्थिति में होगा, क्योंकि आपको सेतुबंध और सेटगिड बिट्स के बारे में चिंता करनी होगी, और उन फ़ाइलों के बारे में जो विश्व-पठनीय नहीं हैं, और फ़ाइलों के बारे में माना जाता है कि समूह- या विश्व-लेखन योग्य हैं।
प्रति-उपयोगकर्ता निर्देशिका में, आपको उन फ़ाइलों के बारे में चिंता करनी होगी जो विश्व-पठनीय नहीं हैं। वहां कोई आपकी मदद नहीं कर सकता।
निष्पादन के लिए, अंगूठे का एक अच्छा नियम वह सब कुछ बनाना होगा जो ऐसा नहीं लगता है कि इसे निष्पादित किया जा सकता है, कोई भी अपमानजनक नहीं हो सकता है। कर्नेल उन लिपियों को निष्पादित कर सकता है, जिनके पहले दो बाइट हैं #!
, ELF बायनेरिज़ जिनके पहले चार बाइट हैं, \x7fELF
जहाँ \x7f
मान 12 के साथ बाइट है, और कुछ दुर्लभ फ़ाइल प्रकार (a.out, कुछ भी पंजीकृत है binfmt_misc
)। इसलिए निम्नलिखित कमांड को आपकी अनुमतियों को एक उचित स्थिति में पुनर्स्थापित करना चाहिए (4 या zsh को मिटाता है, अन्यथा find
निर्देशिका ट्री को ट्रैव करने के लिए उपयोग करें; चेतावनी, सीधे ब्राउज़र में टाइप किया गया):
for x in **/*; do
if ! [ -f "$x" ]; then continue; fi # skip all but regular files
case $(head -c 4 "$x") in
"#!"??) :;; # skip script
"\x7fELF") :;; # skip ELF executable
*) chmod a-x "$x";;
esac
done
ध्यान दें कि लिनक्स पर एक निर्देशिका ट्री की बैक अप और रीस्टोर करने का एक सरल तरीका है, और संभवतः एसीएल समर्थन के साथ अन्य यूनियनों:
getfacl -R >saved-permissions
setfacl --restore=saved-permissions
/
या किसी अन्य निर्देशिका में?