Vi में लॉग इन किया, परिवर्तन किए, पहले sudo को भूल गए - अब क्या


12

मैंने vi संपादक के साथ उबंटू लिनक्स कंप्यूटर पर एक विन्यास फाइल में लंबा बदलाव किया। दुर्भाग्य से, मैं पहले सूडो को भूल गया था, इसलिए अब मैं संपादक में हूं, लेकिन लापता अधिकारों के कारण अपने परिवर्तनों को नहीं बचा सकता। क्या मैं उस टर्मिनल पर उपयोगकर्ता को पीछे हटा सकता हूं, या कार्रवाई करने का सबसे अच्छा कोर्स क्या होगा?


2
यह भी देखें stackoverflow.com/questions/1005/...
therefromhere

जवाबों:


11

इस मामले में, मैं फ़ाइल के साथ लिखता हूं :w /tmp/tmpfile। तब मैं बाहर /tmp/tmpfileजाता हूं और सुडोल अधिकारों के साथ अपनी पुरानी फ़ाइल पर जाता हूं।


यह वही है जो मैं कर रहा हूं, लेकिन मुझे वुफुलक का जवाब पसंद है .. अगर मैं केवल यह याद कर सकता हूं कि अगली बार मैं ऐसा करूं! :)
क्वैक क्विक्सोटे

मुझे आशा है कि आपने फ़ाइल को स्थानांतरित करने के बजाय उसकी प्रतिलिपि बनाई है। मूविंग फ़ाइल के मोड (अनुमतियों) को vi's डिफ़ॉल्ट (जो संभवतः 666 है, आपके "umask" के व्युत्क्रम के साथ बदल देता है), फ़ाइल के स्वामी को आपके UID के साथ बदल देता है (यह "रूट" था, नहीं था?)? और कड़ी को तोड़ता है।
स्कॉट

कुछ समस्याएँ: (1) यदि फ़ाइल को गोपनीय माना जाता है, और आपका "umask" 22 (बजाय 66) है, तो यह प्रक्रिया फ़ाइल की सामग्री को अन्य उपयोगकर्ताओं के लिए उजागर करती है जो /tmpनिर्देशिका की निगरानी कर रहे होंगे । (२) यदि आपके पास वास्तव में आपके सिस्टम पर दुष्ट उपयोगकर्ता हैं, तो /tmp/tmpfileजब आप इसे (इससे vi) लिखते हैं और जब आप इसे सिस्टम कॉन्फ़िगरेशन फ़ाइल में कॉपी करते हैं, जिसे आप एडिट कर रहे थे , तो वे आपस में बदल सकते हैं । यह अस्थायी फ़ाइल को एक निर्देशिका में रखना सुरक्षित है जो केवल आपके पास है।
स्कॉट

40

से एसओ :

:w !sudo tee %

मैं वास्तव में खुद को इस तरह से उपयोग करता हूं कि इसे अब और अधिक बार करूं:

:%!sudo tee %

मुझे लगता है कि यह थोड़ा अधिक सहज है, जैसा कि मुझे पता है कि क्या :%!करता है, जबकि मुझे इसके बारे में समझ नहीं है :w !। इसके अलावा, यह wऔर के बीच बहुत महत्वपूर्ण स्थान को याद करना आसान है !


3
यदि यह आपके अंतर्ज्ञान को किसी भी तरह से मदद करता है, तो याद रखें कि viकमांड कई अक्षर हो सकते हैं, इसलिए सैद्धांतिक रूप से एक " wfoo" कमांड हो सकती है, इसलिए यदि आप " foo" नामक एक फाइल पर लिखना चाहते हैं, तो आपको " " कहना होगा :w foo। यानी, आपको " :w" के बाद एक स्थान चाहिए । जहां तक ​​" :w !" का संबंध है - आप जानते हैं कि " :!" क्या सही है? " :!dateएक date" कमांड चलाता है । इसलिए " :w !xyz" बफर लिखता है, लेकिन एक फाइल के बजाय एक कमांड के लिए।
स्कॉट

इसे स्वीकृत उत्तर बनाया जाना चाहिए क्योंकि मौजूदा मौजूदा उत्तर एक लंबा काम है, जबकि यह एक तत्काल समाधान है। ओ पी?
bschlueter

@ स्पष्टीकरण के लिए धन्यवाद! टी और क्या है %?
कोडीबस्टीन

@CodyBugstein: नमस्कार। (१) छह साल पुरानी टिप्पणियों के लेखक को पिंग करने से आप कहीं नहीं जाते, क्योंकि लोग कभी-कभी निकल जाते हैं और कभी वापस नहीं आते हैं। लेकिन मैं अपने कंप्यूटर के लिए जंजीर हूँ; मैं शायद यहाँ हमेशा के लिए रहूँगा। (या शायद नहीं।) (2) क्या आपने शोध करने की कोशिश की है? "टी" पर जानकारी ढूंढना आसान होना चाहिए। ( % कठिन हो सकता है।) (3) ठीक है, मैं आपकी थोड़ी मदद करूंगा।  teeएक कार्यक्रम है जो आपको कई स्थानों पर जानकारी लिखने देता है। उदाहरण के लिए,  … (Cont'd)date | tee codycody
स्कॉट

(Cont'd) ... और टर्मिनल स्क्रीन पर भी।  date | tee cody > bugsteinएक फ़ाइल के लिए वर्तमान तिथि और समय लिखा जाएगा codyऔर यह भी कहा जाता है एक फ़ाइल के लिए bugstein। - क्या तुम समझती हो sudo? यह आपको किसी अन्य उपयोगकर्ता (आमतौर पर रूट) के विशेषाधिकारों के साथ एक कमांड चलाने की सुविधा देता है। उदाहरण के लिए, ls /rootआम तौर पर विफल हो जाएगा, क्योंकि आपके पास पहुंच नहीं है  /root। लेकिन sudo ls /rootकाम करेंगे। - यूनिक्स के काम करने का एक दुर्भाग्यपूर्ण साइड-इफ़ेक्ट यह है कि sudo ls /root > /root/codyविफल हो जाएगा, क्योंकि आपके पास पहुंच नहीं है  /root, और इसलिए आप इसे लिख नहीं सकते हैं /root/cody। … (Cont'd)
स्कॉट

-2

क्या आप एक और टर्मिनल नहीं खोल सकते हैं और अस्थायी रूप से फ़ाइल के एक्सेस अधिकारों को बदल सकते हैं?


1
यह विचार अच्छा नहीं है। शायद कभी भी एक बड़ी सुरक्षा समस्या नहीं होगी, लेकिन यह हो सकता है, और बेहतर और सरल उपाय हैं (जैसे एक अस्थायी फ़ाइल में लिखना, या बेहतर, :w !sudo tee % solutionwfaulk पोस्ट किया गया
dbr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.