How can I properly set sudo/visudo's editor?


18

Я використовую сервер Ubuntu 10.04 і намагаюся налаштувати sudoers для того, щоб поважати вибір користувача EDITOR (в межах)

У своєму судорі я маю:

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 було встановлено на vim:

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досі використовується для цього користувача. Швидка перевірка env:

$ sudo -- env | grep EDITOR

Повертає нічого.

$ sudo -E -- env | grep EDITOR

Повертається EDITOR=/usr/bin/vim

Я усвідомлюю, що я можу зробити такі дії, щоб змусити EDITOR працювати:

  • Set env_editor, env_keep+=EDITORабо будь-який інший варіант , який зберігає змінну EDITOR в sudoers: Я не хочу , щоб це зробити , оскільки це може дозволити виконання довільного чого - небудь (наприклад export EDITOR=~/bad_program_to_run_as_root)
  • Використовувати sudo -Eабо навіть alias sudo='sudo -E': перемагає те, що мають, env_resetі користувачі без SETENV (не те, що я хочу видавати: див. Попередній пункт) отриматиsudo: sorry, you are not allowed to preserve the environment
  • Набір editor=/usr/bin/vim: Але є й інші користувачі, які не знають vim
  • Використання sudo select-editor: Закрийте, але sudo visudoвсе ще відкривається вnano
  • Просто використовуйте sudoedit або VIM безпосередньо: Але тоді ви втрачаєте безпеку інструментів , таких як visudo, vipw, crontab -e.
  • Просто розібратися з цим: Напевно, але якщо мені не вистачить розуміння, я хотів би знати

Я також спробував встановити VISUALі SUDO_EDITORзмінні (у відчаї)

Чи є щось, що я пропустив, що зробить sudo visudoвідкритим у виборі редактора користувачів, не роблячи компромісів вище?

Редагувати:

Я думаю, я розумію, чому це не працює, як я очікував. Я відкладаю це на той випадок, якщо хтось інший має таке ж неправильне уявлення.

У файлі судорів

Defaults        editor=/usr/bin/nano:/usr/bin/vim
  • Посилається лише на список редакторів, які дозволені під час роботи visudo(не будь-яка інша програма)
  • editorперевіряє $ EDITOR, але якщо працює sudo visudo, sudoне встановлює $ EDITOR, тому при 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

У Debian 7 налаштування EDITOR у середовищі не працювало.

Щоб використовувати Nano, я додав наступний рядок до /etc/sudoers

Defaults        editor="/usr/bin/nano"

РОБОТАЄТЬСЯ, як ЧАМП на DigitalOcean Ubuntu 12.04. Спасибі.
Joe Codeswell601770

Дякую. Це також працювало на Oracle Linux. (Мені подобається nano / pico.)
MikeP

1

env_reset не перешкоджає користувачеві встановлювати змінні в командному рядку:

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

Я вважаю ваші висновки щодо цього editorваріанту слабо шокуючими, але, на жаль, я не знаю відповідей на ваші вторинні запитання. Можна подумати, що в таборі Ubuntu буде багато документів і прикладів конфігурації з цього питання, можливо, нам слід виглядати складніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.