Я використовую сервер 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.