मैं sudo / visudo के संपादक को कैसे ठीक से सेट कर सकता हूं?


18

मैं Ubuntu 10.04 सर्वर का उपयोग कर रहा हूं और उपयोगकर्ता की EDITOR पसंद (सीमा के भीतर) का सम्मान करने के लिए sudoers सेट करने की कोशिश कर रहा हूं

मेरे सुडोर्स में मेरे पास है:

Defaults        editor=/usr/bin/nano:/usr/bin/vim
Defaults        env_reset

और उपयोगकर्ता में .bashrc:

export EDITOR=/usr/bin/vim

$ EDITOR सेट है:

$ echo $EDITOR
/usr/bin/vim

इसके अनुसार man sudoers$ EDITOR को सेट करने के लिए पर्याप्त होना चाहिए:

editor  A colon (':') separated list of editors allowed to be used with visudo.
        visudo will choose the editor that matches the user's EDITOR environment
        variable if possible, or the first editor in the list that exists and is
        executable. The default is the path to vi on your system.

हालाँकि nanoअभी भी इस उपयोगकर्ता के लिए उपयोग किया जा रहा है। एनवी की त्वरित जांच:

$ sudo -- env | grep EDITOR

कुछ भी नहीं लौटाता।

$ sudo -E -- env | grep EDITOR

रिटर्न EDITOR=/usr/bin/vim

मुझे पता है कि मैं EDITOR काम करने के लिए निम्नलिखित काम कर सकता हूं:

  • सेट env_editor, env_keep+=EDITORया कोई अन्य विकल्प जो EDITOR चर को sudoers में रखता है: मैं ऐसा नहीं करना चाहता क्योंकि यह किसी भी चीज़ का मनमाना निष्पादन कर सकता है (उदाहरण के लिए export EDITOR=~/bad_program_to_run_as_root)
  • उपयोग sudo -Eया यहां तक ​​कि alias sudo='sudo -E': env_resetSETENV के बिना होने और उपयोगकर्ताओं के बिंदु को परिभाषित करता है (ऐसा कुछ नहीं जिसे मैं बाहर देना चाहता हूं: पिछले बिंदु देखें)sudo: sorry, you are not allowed to preserve the environment
  • सेट करें editor=/usr/bin/vim: लेकिन ऐसे अन्य उपयोगकर्ता हैं जो विम नहीं जानते हैं
  • उपयोग करें sudo select-editor: बंद करें, लेकिन फिर sudo visudoभी अंदर खुलता हैnano
  • बस sudoedit का उपयोग करें या सीधे विम: लेकिन फिर आप जैसे उपकरणों की सुरक्षा खो visudo, vipw, crontab -e
  • बस इसके साथ सौदा करें: शायद, लेकिन अगर मुझे कुछ अंतर्दृष्टि याद आ रही है तो मुझे जानना अच्छा लगेगा

मैं भी स्थापित करने की कोशिश की किया है VISUALऔर SUDO_EDITORचर (हताशा में)

क्या ऐसा कुछ है जो मैंने याद किया है sudo visudo, जो उपयोगकर्ताओं के पसंद के संपादकों के लिए खुला बना देगा , बिना समझौता किए?

संपादित करें:

मुझे लगता है कि मैं समझता हूं कि यह मेरी अपेक्षा के अनुरूप काम नहीं कर रहा है। मैं इसे नीचे रख रहा हूँ अगर किसी और की गलत धारणा है।

Sudoers फ़ाइल में

Defaults        editor=/usr/bin/nano:/usr/bin/vim
  • केवल उन संपादकों की सूची को संदर्भित करता है जिन्हें चलाने के दौरान अनुमति दी जाती है visudo(कोई अन्य कार्यक्रम नहीं)
  • editorचेकों $ संपादक, लेकिन अगर चल sudo visudo, sudo$ संपादक निर्धारित नहीं करता है, इसलिए जब visudoरन यह खाली हो जाएगा
  • इसलिए पहले संपादक का उपयोग किया जाता है, इस मामले में nano

क्या कोई पुष्टि कर सकता है कि यह सही है?

इसलिए मुझे उम्मीद थी कि एक सुरक्षित समाधान जोड़ना होगा:

Defaults!/usr/sbin/visudo env_keep+=EDITOR

यानी EDITOR रखें और यदि केवल विडो चल रहे हों। इसके बाद जांच की जाएगी

Defaults                  editor=/usr/bin/nano:/usr/bin/vim

और अगर यह मेल नहीं खाता था या तो उपयोग करेगा nano

हालांकि अजीब है, यह मामला प्रतीत नहीं होता है:

$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged

/bin/echoसंपादक के रूप में प्रयोग किया जाता है। बग? या एक और गलतफहमी?

धन्यवाद

जवाबों:


6

आप सही हैं कि EDITORचर सेट करने के लिए उपयोग किए जाने वाले संपादक को बदलना चाहिए sudo। हालाँकि, दो अन्य चर हैं EDITOR: पूर्ववर्ती से अधिक : SUDO_EDITORऔर VISUAL। सुनिश्चित करें कि उनमें से कोई भी किसी अन्य संपादक की तरह इंगित न करें nano


मैंने जो कारण बताया, वह इसलिए है क्योंकि बहुत कम उत्तर VISUALपूर्वता लेने के संदर्भ में हैं EDITOR। मुझे लगा कि मेरे EDITORचर को केवल अनदेखा किया जा रहा है। Centos7 में, दोनों ओर मुड़ते हैं EDITORऔर VISUALडिफ़ॉल्ट रूप से लगते हैं pico
तीन

5

यहाँ वर्णित के रूप में एक और समाधान है :

sudo update-alternatives --config editor

लेकिन यह एक बहु-उपयोगकर्ता प्रणाली पर इतना अनुकूल नहीं है क्योंकि यह केवल एक सिमलिंक को अद्यतन करता है /usr/bin/:

$ ls -l `which editor`
lrwxrwxrwx 1 root root 24 lip  4 19:37 /usr/bin/editor -> /etc/alternatives/editor

$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 18 Jul  5 01:39 /etc/alternatives/editor -> /usr/bin/vim.basic

select-editorवैसे भी क्या हुआ ? जब मैं इसे चलाता हूं, तो यह एक फाइल बनाता है:

$ ls -l .selected_editor 
-rw-r--r-- 1 rld rld 75 Jul  5 01:54 .selected_editor

$ cat .selected_editor 
# Generated by /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/vim.basic"

लेकिन sudo visudoनैनो का उपयोग करता रहता है।


3

डेबियन 7 में, पर्यावरण में EDITOR की स्थापना से काम नहीं चला।

नैनो का उपयोग करने के लिए, मैंने निम्नलिखित पंक्ति को जोड़ दिया /etc/sudoers

Defaults        editor="/usr/bin/nano"

डिजिटलऑनलाइन उबंटू 12.04 पर एक प्रकार का काम करता है। धन्यवाद।
जो कोड्सवेल यूजर 601770

धन्यवाद। यह ओरेकल लिनक्स पर भी काम करता था। (मुझे नैनो / पिको पसंद है।)
माइक पी

1

env_reset कमांड लाइन पर वैरिएबल सेट करने से उपयोगकर्ता को नहीं रखता है:

$ sudo EDITOR=vim -- env |grep EDIT
EDITOR=vim

मैं editorविकल्प के बारे में आपके निष्कर्षों को हल्के से चौंकाने वाला हूं लेकिन दुर्भाग्य से मुझे आपके माध्यमिक प्रश्नों के उत्तर नहीं पता हैं। एक को लगता है कि उबंटू शिविर में इस मुद्दे पर बहुत सारे डॉक्स और कॉन्फ़िगरेशन उदाहरण होंगे, शायद हमें कठिन दिखना चाहिए।

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