VIM: "sudo vim bad_idea"?


20

#Vim में एक irc-user ने मुझसे आग्रह किया कि मैं Vim के साथ Sudo का उपयोग न करें:

sudo vim bad_idea

जब मैं / var / www / जैसे स्थानों में चीजें कर रहा हूं, तो मैं इसके बिना नहीं लिख सकता। तो सूदो का इस्तेमाल न करना एक समस्या बन जाती है। बेशक, मैं विभिन्न स्थानों जैसे / tmp / में बदलाव कर सकता हूं और फिर dirs को / var / www में कॉपी कर सकता हूं। हालांकि, मैं एक आसान तरीका समझती हूं।

  1. यदि आप "सुडो विम" ​​नहीं करते हैं, तो क्यों?
  2. यदि हाँ 1 प्रश्न के लिए, तो आप sudo का उपयोग नहीं करने के लिए समस्याओं को कैसे दरकिनार करते हैं?

जवाबों:


35

मैं पहली श्रेणी में आता हूं: sudo vim /var/www/html/some_fileएक बुरा विचार है; यह शेल एस्केप की अनुमति देता है जो लॉग नहीं हैं। इसके बजाय, उपयोग करें sudoedit /var/www/html/some_file; उसी का प्रभाव है।


5
"शेल एस्केप क्या लॉग इन नहीं हैं"? और केवल / var / www में ही बात क्यों नहीं है?
दोपहर 11:58

6
vim में कमांड लाइन पर अन्य कमांड चलाने की शक्ति है। हालाँकि, क्योंकि विम को सुडो के माध्यम से शुरू किया गया था, और इसलिए रूट के रूप में चल रहा है, उन कमांडों में से कोई भी रूट विशेषाधिकारों के साथ चलेगा। इन आदेशों को "शेल एस्केप" के रूप में जाना जाता है और सूडो के अन्य आह्वान के तरीके को लॉग नहीं किया जाता है। और यह सिर्फ / var / www तक ही सीमित नहीं है; यह हर जगह है कि मैं इसका इस्तेमाल करूँगा। मैंने अपनी bashrc फ़ाइल में "sudoedit" के लिए "sudo vi" भी उतारा है।
केविन एम

मैं देख रहा हूं कि आप क्या कर रहे हैं और सहमत होना चाहते हैं लेकिन स्पष्ट करें। हमें इस बात का कोई अंदाजा नहीं है कि उसकी सामान्य सु और सूडो रूट गतिविधियों को लॉग किया जा रहा है या नहीं। "सुडो विम" ​​रूट के रूप में एक उप-संस्करण चलाने की अनुमति देता है - यह बहुत सटीक है; उस खोल के भीतर, "सुडो" को नियंत्रित नहीं किया जाएगा कि कौन सा रूट और क्या नहीं कर सकता है।
16

3
केविन, आपने "सुदो विएत" को "सुदो वि" कैसे प्रबंधित किया? बैश मैनुअल से ... "वर्ण /, $,`, और = और शेल मेटाचैकर या ऊपर सूचीबद्ध वर्ण उद्धृत करने वाला कोई भी अन्य नाम नहीं दिखाई दे सकता है। " ... अंतरिक्ष उन मेटाचैटर्स में से एक है जिनके बारे में बात कर रहे हैं।
16

9
ठीक है, इसलिए यह प्रति से अधिक उपनाम नहीं है, लेकिन इसका एक ही प्रभाव है: 'फ़ंक्शन sudo () {[[$ 1 == vi]] && शिफ्ट और& sudoedit "$ @" || कमांड sudo "$ @"; } '
केविन एम

10

देखें: /programming/1005/getting-root-permissions-on-a-file-inside-of-vi :

% को वर्तमान फ़ाइल नाम से बदल दिया जाता है, इस प्रकार आप उपयोग कर सकते हैं:

: w! सुडो टी%


यदि आप टी का उपयोग करने जा रहे हैं, तो मैं आपको सुझाव दूंगा: w! Sudo tee%> / dev / null 'ताकि आप पूरी फाइल को वापस आप पर न देखें। मैं आमतौर पर ': w! Dd = =' के बजाय इसका उपयोग करता हूं क्योंकि यह टाइप करने के लिए तेज है और समान चीज को प्राप्त करता है। बेशक, यह केवल तभी है जब मैं sudoedit / sudo -e का उपयोग करना भूल गया हूं।
जैमेसन

7

vim उपयोगकर्ताओं को मनमाने ढंग से शेल कमांड निष्पादित करने की अनुमति देता है, इसलिए कई सिस्टम एडिंस विम को सुडो के साथ उपयोग करने की अनुमति नहीं देते हैं।

रिम को विम के साथ शामिल किया गया है। यह एक प्रतिबंधित विम है, जो शेल कमांड की अनुमति नहीं देता है। (या आपको उन्हीं कारणों से विम को निलंबित करने की अनुमति है।)

आप अपने खुद के बॉक्स पर उन चरम सीमाओं पर जाने की जरूरत बहस का मुद्दा है।


1
+1। पूरी तरह से सहमत हूँ। sudo vimफिर दर्ज करें :!bashऔर आपके पास मूल के रूप में एक शेल है - वास्तव में rvimमौजूद क्यों है
dbr

3
वास्तव में यदि आप सुडोल कर सकते हैं, तो आप शायद sudo bashया sudo su -सही कर सकते हैं ?
dlamblin

@diamblin प्रिविलेज को बारीकी से बारीकी से देखा जाना चाहिए, इसलिए जरूरी नहीं है। इसलिए rvim की जरूरत है। "सूदो विम" ​​सभी इरादों और उद्देश्यों के लिए "सूदो सु -" के समान है। डेबियन बिट्टी-बॉक्स पर जहां एक उपयोगकर्ता सिस्टम प्रशासक है, हालांकि यह सभी शैक्षणिक है।
रिचर्ड हॉकिंस

Ubuntu इस मुद्दे से कैसे निपटती है? CentOS पर viलॉन्च किया गया vimलेकिन रूट viलॉन्च के रूप में vi। उबंटू vimमें दोनों मामलों में उपयोग किया जाता है और sudo viलॉन्च भी vim...
cwd

6

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

विशेष मामले में /var/www/, यानी वेब सर्वर पृष्ठ, आप कुछ मालिकाना / समूह / अनुमतियाँ बदलने के बारे में सोचना चाह सकते हैं --- लेकिन अगर और कैसे बड़े पैमाने पर आपके विशेष सेटअप (एकल / बहु उपयोगकर्ता, वास्तविक वेब सर्वर / बस स्थानीयहोस्ट, डायनेमिक) पर निर्भर करता है / स्थिर, आदि)


6
+1 वास्तव में - यह वेब-सर्वर पृष्ठों को संभालने का सबसे अच्छा तरीका है। सुनिश्चित करें कि आपके पास अपने विशेषाधिकारों को बढ़ाने के बजाय उनकी पहुंच है।
शयनकक्ष

1
-1 एलीवेटेड विशेषाधिकारों के साथ विम को चलाने का कोई कारण नहीं है जब सूडोइट एक ही काम करेगा।
sml

4

इस तरह का एक सवाल मुझे अपने माथे पर मुस्कान ला देता है। मैं सुरक्षा के दूसरे पक्ष पर हूं, "सुरक्षा को उपयोगकर्ता के अनुभव में हस्तक्षेप नहीं करना चाहिए, जब तक कि औसत व्यक्ति को दुर्भावनापूर्ण गतिविधि को रोकने के लिए अपेक्षित या आवश्यक न हो।"

विम के सूडो उपयोग को रोकना सिर्फ एक बैंड सहायता है। जैसा कि पहले कहा गया है, कोई व्यक्ति केवल उपयोग कर सकता है:

sudo su -

या

sudo /bin/bash

या

sudo nano file

या

sudo my_exectuable_text_editor file

ect

यदि आप वास्तव में किसी को बॉक्स पर दुर्भावनापूर्ण काम करने के बारे में चिंतित हैं, तो उन्हें sudo (या रूट पासवर्ड स्पष्ट रूप से) विशेषाधिकार, अवधि न दें। सुडो का उपयोग करके दुर्भावनापूर्ण गतिविधि को रोकने के लिए कोई स्लिवर बुलेट नहीं है और आप केवल यह सुनिश्चित करने के लिए "सभी" सुधार "" लागू करके अपने आप को पागल कर देंगे कि कोई व्यक्ति कुछ भी दुर्भावनापूर्ण नहीं कर सकता है।

किसी ने बदलते स्वामित्व / समूहों का उल्लेख किया। यह एक चिपचिपी समस्या है जैसे कि वेब सर्वर को किसी अन्य उपयोगकर्ता के रूप में चलाया जाता है, और आप फ़ाइल पर अनुमतियाँ बदलते हैं, अब अचानक आपकी साइट काम नहीं करती है। ठीक है, जाहिर है कि आपकी मदद नहीं करेगा। आप अपने आप को उस समूह से जोड़ सकते हैं जिस पर वेब सर्वर चलता है, हालाँकि, यदि समूह के पास फ़ाइलों तक पहुँच नहीं है, तो आपको chmod -R g + w * (या chmod अलग-अलग फ़ाइलें) करने की आवश्यकता होगी जो कि नहीं हो सकती यदि आप चाहते हैं और एक परेशानी हो सकती है अगर आपको हर फ़ाइल को चोदना पड़े।

कुछ लोगों ने rvim का उपयोग करने का सुझाव भी दिया। निश्चित रूप से, कोई बस / etc / sudoers में एक पंक्ति जोड़ सकता है केवल कुछ उपयोगकर्ताओं को sudo rvim को अनुमति देने के लिए, हालाँकि, यह तार्किक रूप से खड़ा होगा कि यदि आपको उस मार्ग पर जाना है, तो वेब आधारित फ़ाइल प्रबंधक को लागू करना बेहतर हो सकता है। इस तरह यह वेब सर्वर के रूप में चल रहे उपयोगकर्ता के रूप में चल रहा है, इस प्रकार कोई फ़ाइल अनुमति समस्या नहीं है और आप अभी भी कौन फ़ाइलों को संपादित करता है पर दानेदार नियंत्रण हो सकता है।

मेरे दो रास्ते वैसे भी।


2

रनिंग डायरेक्टरी sudo vimको नहीं बदलेगी $HOME, इसलिए आप रूट अनुमतियों के साथ विम को चलाएंगे, लेकिन फिर $HOMEभी आपके सामान्य उपयोगकर्ता की ओर इशारा करते हैं।

यदि यह पहली बार है जब आप विम चला रहे हैं, तो ऐसा हो सकता है कि ~/.viminfoफ़ाइल आपके सामान्य उपयोगकर्ता निर्देशिका के अंदर बनाई गई हो, लेकिन रूट अनुमतियों के साथ।


1
सूडो पर निर्भर करता है। मेरे लैपटॉप पर मेरा sudo vim -c '!echo $HOME' -c qहोम फोल्डर देता है, लेकिन मेरे सर्वर पर यह देता है /root। मुझे इस बात पर एक नज़र डालनी चाहिए कि ऐसा क्यों हो सकता है, क्योंकि किसी का ओएस एक्स, जबकि दूसरे का जेंटू, या /etc/sudoersसेटअप के साथ कुछ करने के लिए हो सकता है ।
निमो 157

अहा! आप सही कह रहे हैं - मैं यहाँ यह सोचकर समाप्त हो .viminfoगया कि मेरी जड़ ही क्यों सुलभ थी।
अरिअत

1

अगर यह आपका खुद का कंप्यूटर है ... मुझे कोई कारण नहीं है कि आप 'सुडो विम' का उपयोग नहीं कर सकते हैं, जो कि डेनिलसन ने उल्लेख किया है कि किनारे के अलावा - यह आपके ~ / .viminfo को रूट के स्वामित्व में बना सकता है।

यदि नहीं - यदि कोई सिस्टम एडमिनिस्ट्रेटर प्रतिबंधित कर रहा है तो आप जो कर सकते हैं और नहीं कर सकते हैं - "मैन सूडो" के अनुसार: "अधिकांश सिस्टमों पर शेल को सुडो के नोएसेक कार्यक्षमता के साथ बचना संभव है। विवरण के लिए sudoers (5) मैनुअल देखें। "

तो इस मामले में, यदि आपका सिस्मैडिन आपके भीतर सबमिशन को रूट के रूप में चलाने की क्षमता के बारे में चिंतित है, तो वे नोइसेक क्षमता का उपयोग कर सकते हैं। लेकिन ... प्रारंभिक मामले में वापस - अगर यह आपका कंप्यूटर है, तो मुझे लगता है कि आप 'सुर्दो विम' चलाने के लिए बहुत सुरक्षित हैं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.