CH-J Server ManagerSSH के ज़रिए सर्वर प्रबंधन
मेनू
सभी मार्गदर्शिकाएँ और लेख →

संपादन के दौरान रिमोट फ़ाइल बदल गई: उसे ओवरराइट करने से कैसे बचें

कैसे पता लगाएँ कि आपके संपादन के दौरान किसी और ने सर्वर की फ़ाइल बदली है, संस्करणों की तुलना करें और किसी भी बदलाव को खोए बिना सहेजें।

समस्या कैसे होती है

आप फ़ाइल खोलते हैं और अपनी कॉपी संपादित करते समय कोई और मूल फ़ाइल में लिख देता है: दूसरा प्रशासक, कॉन्फ़िगरेशन प्रबंधन का कोई रन, पैकेज अपग्रेड या खुद एप्लिकेशन। इसके बाद सहेजने पर दूसरे का बदलाव बिना किसी त्रुटि के गायब हो जाता है। स्थानीय संपादन के बाद SFTP से अपलोड करने में यह जोखिम खास तौर पर अधिक है, क्योंकि पढ़ने और लिखने के बीच लंबा समय होता है और साधारण अपलोड किसी चीज़ की तुलना नहीं करता।

शुरू करने से पहले स्थिति दर्ज करें

फ़ाइल डाउनलोड करते समय चेकसम और आखिरी बदलाव का समय नोट करें। अपलोड करने के ठीक पहले उन्हें दोबारा जाँचें। अलग चेकसम का मतलब है कि फ़ाइल बदल गई है और बिना देखे उसे ओवरराइट नहीं करना चाहिए।

sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.conf

बदलावों की तुलना करके उन्हें मर्ज करें

अपनी संपादित कॉपी को नए नाम से रखें, मौजूदा संस्करण लाएँ और उसकी तुलना उस संस्करण से करें जिससे आपने शुरुआत की थी, और अपने संस्करण से भी करें। फिर मौजूदा संस्करण को ओवरराइट करने के बजाय उसमें अपना बदलाव लागू करें। diff3 कमांड तीनों संस्करण एक साथ दिखा सकता है।

diff -u example.conf.orig example.conf.current
diff -u example.conf.orig example.conf.mine
diff3 example.conf.mine example.conf.orig example.conf.current

पता लगाएँ कि फ़ाइल कौन बदल रहा है

अगर फ़ाइल बार-बार बदलती रहती है, तो दोबारा संपादन से पहले उसका कारण खोजें। जाँचें कि फ़ाइल किसने खोल रखी है और जर्नल तथा पैकेज इतिहास देखें। अगर फ़ाइल कॉन्फ़िगरेशन प्रबंधन के नियंत्रण में है, तो वहीं उसका टेम्पलेट बदलें, वरना अगला रन आपके संपादन को बदल देगा।

sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.log

चेतावनी लॉक नहीं है

vim और nano जैसे संपादक चेतावनी देते हैं अगर फ़ाइल खोले जाने के बाद बदल गई हो, लेकिन वे दूसरी प्रक्रिया को उसमें लिखने से नहीं रोकते। चेकसम तुलना पर भी यही बात लागू होती है: सहेजने से ठीक पहले की जाँच जोखिम वाला समय बहुत छोटा कर देती है, लेकिन शून्य नहीं करती। जिन सर्वरों पर कई लोग काम करते हैं, वहाँ संस्करण नियंत्रण में रखा कॉन्फ़िगरेशन स्रोत किसी भी संपादक से बेहतर सुरक्षा देता है।

CH-J Server Manager में सहेजते समय सुरक्षा

File Manager का संपादक सहेजते समय फ़ाइल दोबारा जाँचता है। अगर उसकी सामग्री, अनुमतियाँ या लिंक का लक्ष्य बदल गया है, तो सहेजना रुक जाता है और मूल फ़ाइल जैसी है वैसी रहती है। इसके बाद आप सर्वर से मौजूदा संस्करण लोड कर सकते हैं, लेकिन इससे आपके बिना सहेजे बदलाव हट जाते हैं, इसलिए पहले अपना टेक्स्ट कहीं और कॉपी कर लें। संपादक आपके लिए संस्करण मर्ज नहीं करता। स्थानांतरण के दौरान ऐप बदले हुए या पहले से मौजूद लक्ष्य को बदलने से पहले पूछता है और अगर स्रोत स्थानांतरण के दौरान बदल गया हो, तो दोबारा शुरू करने को कहता है।

विस्तृत दस्तावेज़

man: stat →

man: diff →

बायोमेट्रिक अनलॉक और सुरक्षा →