Вопрос или проблема
Fedora 14 использует vi по умолчанию при запуске visudo. Можно ли это изменить на что-то другое?
Добавление Defaults editor=/path/to/editor
в файл sudoers заставит visudo использовать указанный редактор для изменений.
Кроме того, если ваш пакет sudo был собран с опцией –with-env-editor, что является стандартом в некоторых дистрибутивах Linux, вы также можете установить переменную окружения EDITOR, выполнив export EDITOR=/path/to/editor
. Выполненная в командной строке, эта операция будет аннулирована, как только сессия этого терминала будет завершена; установка переменной в ~/.bashrc или /etc/profile сделает изменения постоянными.
Следующее
- работает для дистрибутивов, которые используют
alternatives
(изначально только Debian и его форки, но теперь большинство крупных дистрибутивов, если я правильно понимаю). -
имеет преимущество, что
- вам не нужно будет сначала редактировать
sudoers
с его стандартным редактором - это работает, даже если пакет
sudo
не был собран с--with-env-editor
- вам не нужно будет сначала редактировать
Из командной строки:
- Запустите
sudo update-alternatives --config editor
- Выберите желаемый редактор из меню. Если вы не видите нужный редактор, вероятно, вам нужно его установить; отмените, сделайте это и повторите.
sudo visudo
теперь должен открывать редактор на ваш выбор.
visudo
использует переменную EDITOR
, например.
sudo EDITOR=/path/to/editor visudo
Обычная программа unix, которая хочет вызвать редактор, запустит программу, имя которой указано в переменной окружения EDITOR
или VISUAL
, и если переменная не установлена, будет использоваться системный по умолчанию редактор. Многие, но не все программы проверяют обе переменные EDITOR
и VISUAL
; различие давно устарело (когда-то вы запускали EDITOR
на телетайпе и VISUAL
на «стеклянном» терминале…), поэтому лучше установить обе переменные в одно и то же значение. Существует некоторое разногласие по поводу того, должно ли содержимое переменной быть полным путем к исполняемому файлу, именем исполняемого, которое ищется в $PATH
, или фрагментом оболочки, поэтому лучше остановиться на пути к исполняемому файлу без символов оболочки. Системным значением по умолчанию, когда ни одна из переменных не установлена, традиционно является vi
, хотя некоторые дистрибутивы изменили это на более дружественный для новичков редактор, такой как nano
.
visudo
проверяет обе переменные VISUAL
и EDITOR
(это может быть выключено при сборке, вероятно, чтобы отговорить root использовать редактор, в безопасности которого разработчик дистрибутива не уверен, но даже OpenBSD этого не делает).
Эти шаги позволили мне установить редактор на vi для visudo на Ubuntu 12.04, они могут работать и для других дистрибутивов:
Введите команду:
sudo visudo
Это откроет файл sudoers в nano. Вверху вы увидите эту строку:
Defaults env_reset
Добавьте следующую строку под этой строкой:
Defaults editor=/usr/bin/vi
Сохраните файл и выйдите. Заново откройте visudo как обычный пользователь:
sudo visudo
Теперь файл sudoers откроется в VI.
На мой взгляд, лучший способ сделать это — позволить каждому пользователю установить свой предпочтительный редактор с помощью переменных окружения EDITOR
и VISUAL
в своем собственном файле .bashrc
(или эквивалентном для выбранной оболочки), а затем указать sudo
учитывать эти переменные.
Таким образом, вы добавите это в /etc/sudoer
с помощью visudo
:
## Учитывать выбор редакторов пользователя
Defaults env_keep += "EDITOR VISUAL"
Затем добавьте это в ~/.bashrc
:
# например, если вы хотите использовать micro
EDITOR=micro
VISUAL=micro
Для различия между EDITOR
и VISUAL
и почему, на мой взгляд, лучше установить оба, см. этот ответ.
После этого sudo visudo
должен использовать предпочитаемый редактор пользователя для всех пользователей.
Рекомендую прочитать этот раздел в ArchWiki: https://wiki.archlinux.org/title/Sudo#Using_visudo
Вкратце вы можете использовать такую синтаксис:
$ EDITOR=nano sudo visudo
Если вы не хотите задавать переменную окружения EDITOR
каждый раз, вы можете сделать это постоянным, используя некоторые из инициализационных файлов оболочки, таких как .bashrc
или .zshrc
. Но помните, что это может быть вопросом безопасности, поскольку не-root аккаунт может использоваться для изменения этого и любой команды для этого.
Чтобы сделать переменную EDITOR
постоянной и в то же время избежать уязвимости, определите редактор только для visudo
и предотвратите использование visudo
переменных окружения EDITOR
или VISUAL
:
# Установить редактор по умолчанию на ограниченную версию nano и запретить visudo использовать EDITOR/VISUAL.
Defaults editor=/usr/bin/rnano, !env_editor
.
Ответ или решение
Для изменения редактора, который используется командой visudo
на Fedora, необходимо предпринять несколько шагов. В Fedora 14, по умолчанию используется редактор vi
, что может не всем пользователям быть удобным. Если вы предпочитаете работать в другом редакторе, его настройка потребует либо изменения конфигурации, либо установки переменных окружения. Рассмотрим все возможные подходы.
Теория
Команда visudo
предназначена для безопасного редактирования файла конфигурации sudoers
. Это важно, потому что ошибка в этом файле может привести к потере доступа к привилегиям суперпользователя на системе. По умолчанию, visudo
использует переменную окружения EDITOR
для определения, какой редактор использовать. Однако, если ни EDITOR
, ни VISUAL
не установлены, будет использован системный редактор по умолчанию, обычно это vi
.
Пример
Первый подход для изменения редактора заключается в установке переменной окружения EDITOR
или VISUAL
. Это можно сделать следующим образом:
export EDITOR=/usr/bin/nano
export VISUAL=/usr/bin/nano
Эти команды могут быть добавлены в файл ~/.bashrc
или ~/.zshrc
, чтобы изменения сохранились при запуске новых терминальных сессий.
Второй способ заключает в себе использование опции --with-env-editor
, которая позволяет назначить редактор непосредственно перед запуском visudo
:
sudo EDITOR=/usr/bin/nano visudo
Применение
Для долгосрочного изменения редактора, который используется командой visudo
, вы также можете изменить sudoers
файл, добавив строку:
Defaults editor=/usr/bin/nano
Для этого откройте редактор командой sudo visudo
, и добавьте вышеуказанную строку после Defaults env_reset
. Это глобально изменит редактор для всех пользователей.
Дополнительно, на современных дистрибутивах, включая Fedora, можно использовать систему альтернатив:
- Запустите команду:
sudo update-alternatives --config editor
. - Выберите нужный редактор из списка предложенных.
Заключение
Имейте в виду, что выбор менее безопасного редактора может представлять угрозу безопасности. Поэтому рекомендуется устанавливать редактор, которому вы доверяете. Также есть смысл в добавлении строки в sudoers
, которая сохраняет предпочтение редактора каждого пользователя:
Defaults env_keep += "EDITOR VISUAL"
Таким образом, каждый пользователь сможет назначить свои предпочтения редактора в файле ~/.bashrc
, если sudo
их будет учитывать. В завершение, не забывайте о важности регулярных проверок и тестов изменения конфигурации, чтобы избежать ошибок, которые могут лишить вас административных привилегий.