यह है संभव इस तरह के एक गंदा स्थिति से वापस आने के लिए , प्रणाली फिर से स्थापित करने के बिना। ठीक है, अगर आप एक दोहरी बूट प्रणाली है, तो वास्तव में एक यूएसबी कुंजी से या वीरुटल बॉक्स में (या तो) एक नया नया सिस्टम चला रहे हैं।
मैं फिर से उसी तरह के मुद्दे पर भागा (एक स्क्रिप्ट में कुछ बग मैं लिख रहा था) और इसे हल किया, लेकिन आपको कुछ विशेषज्ञ की मदद लेने की आवश्यकता है। बहुत सतर्क रहें!
सबसे पहले, मेरी स्थिति को हल करना आसान था क्योंकि मेरे पास एक दोहरी बूट सिस्टम (ubuntu और मेरा पुराना फेडोरा इंस्टॉल) था, लेकिन एक यूएसबी कुंजी (या शायद एक सीडी / डीवीडी) के लिए सिस्टम चलाना एक ही काम करना चाहिए।
MPOINT = / माउंट / ubuntu
पहले मैंने अपनी फाइल सिस्टम को इस तरह से माउंट किया (माउंट पॉइंट बनाना न भूलें): माउंट / देव / ubuntu / root $ MPOINT माउंट / देव / ubuntu / home $ MPOINT / home
फिर मैंने निम्नलिखित कमांड को चलाया (मेरा मुद्दा केवल कुछ - महत्वपूर्ण - निर्देशिकाओं में) चल रहे सिस्टम से अनुमतियों को गन्दा एक पर कॉपी करने के लिए था (वास्तव में, मेरे मामले में, मैंने फेडोरा के तहत वर्चुअल बॉक्स में एक ubuntu प्रणाली स्थापित की थी और वहां पर अनुमति मिल गई):
/ etc / usr / bin -exec stat --format "chmod% a $ {MPOINT}% n" {{}; > /tmp/restoreperms.sh
और फिर मैंने रिस्टोरपर.श स्क्रिप्ट को चलाया।
मैं ubuntu पर फिर से बूट करने में सक्षम था।
Restoreperms.sh की सामग्री कुछ इस तरह होगी:
(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)
मैंने इसका परीक्षण नहीं किया, लेकिन इसे मालिकों और मालिक समूहों के लिए भी काम करना चाहिए। कुछ इस तरह:
/ etc / usr / bin -exec stat --format 'chown% U:% G $ {MPOINT}% n' {} \; > /tmp/restoreperms.sh^
(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)
बेशक, आपको यहां ध्यान रखना होगा, कि यूआईडी और जीआईडी दोनों प्रणालियों पर समान हैं, लेकिन सिस्टम से संबंधित उपयोगकर्ताओं और समूहों के लिए, यह एक मुद्दा नहीं होना चाहिए।
आर:
इसके लिए एक महत्वपूर्ण बात यह है कि आपके द्वारा उपयोग किए जा रहे संस्करण के साथ इंस्टॉल डिस्क को चालू रखें, या कम से कम वर्तमान ubuntu संस्करण के साथ काम करें। अब, मेरे पास यह जानकारी रखने के लिए एक क्रोनजॉब में, हर दिन (सप्ताह हो सकता है) चल रहा है। यह अगली बार समाधान को आसान बना देगा, लेकिन निश्चित रूप से, जैसा कि मेरे पास अभी है, ऐसा फिर कभी नहीं होगा। ;-) कुछ इस तरह:
0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2
0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2
संपादित करें: लिंक का समर्थन करने के लिए, संयुक्त आदेश है:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {}