Я використовую сервер 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
використовується як редактор. Помилка? Або чергове помилкове уявлення?
Спасибі
VISUAL
перевагу надEDITOR
. Я думав, що моюEDITOR
змінну просто ігнорують. Виходить, у Centos7 і те,EDITOR
і,VISUAL
здається, за замовчуваннямpico
.