Как настроить visudo для использования другого редактора, отличного от редактора по умолчанию, в Fedora?

Вопрос или проблема

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 и его форки, но теперь большинство крупных дистрибутивов, если я правильно понимаю).
  • имеет преимущество, что

    1. вам не нужно будет сначала редактировать sudoers с его стандартным редактором
    2. это работает, даже если пакет sudo не был собран с --with-env-editor

Из командной строки:

  1. Запустите sudo update-alternatives --config editor
  2. Выберите желаемый редактор из меню. Если вы не видите нужный редактор, вероятно, вам нужно его установить; отмените, сделайте это и повторите.

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, можно использовать систему альтернатив:

  1. Запустите команду: sudo update-alternatives --config editor.
  2. Выберите нужный редактор из списка предложенных.

Заключение

Имейте в виду, что выбор менее безопасного редактора может представлять угрозу безопасности. Поэтому рекомендуется устанавливать редактор, которому вы доверяете. Также есть смысл в добавлении строки в sudoers, которая сохраняет предпочтение редактора каждого пользователя:

Defaults env_keep += "EDITOR VISUAL"

Таким образом, каждый пользователь сможет назначить свои предпочтения редактора в файле ~/.bashrc, если sudo их будет учитывать. В завершение, не забывайте о важности регулярных проверок и тестов изменения конфигурации, чтобы избежать ошибок, которые могут лишить вас административных привилегий.

Оцените материал
Добавить комментарий

Капча загружается...