Действительно ли Vim безопасно использовать в сочетании с sudo?

Не желательно использовать sudo с графическим приложением как gedit, как описано в этой ссылке. Соответственно, я был склонен использовать vim с sudo.

Недавно я заметил мой ~/.viminfo принадлежал корню на довольно новой установке Ubuntu 16.04 (Гостеприимный Xerus), таким образом, это имело меня задающийся вопросом, считается ли даже Vim графическим или если существует некоторая другая проблема с вызовом sudo vim. После изменяющегося владения мне через:

sudo find $HOME -not -user $USER -exec chown $USER:$(id -g) {} +

и впоследствии выполнение sudo vim Я не мог иметь ~/.viminfo принадлежавший корню. Однако я уверен, что это недавно принадлежало корню.

Действительно ли это нецелесообразно для вызова sudo vim?

25
задан 7 November 2018 в 10:51

6 ответов

Да, это безопасно.

Проблема с sudo gedit то, потому что приложения GUI используют определенные файлы, такой как ~/.cache/dconf, и, после того, как поднято gedit тот файл становится корневым. Ну, тот конкретный файл содержит определенные для пользователя настройки для приложений GUI, включая рабочий стол, поэтому если система не может считать те настройки - это плохо. IIRC пользователь не может запустить конкретный рабочий стол. Недавние данные файлов пользователя recently-used.xbel также затронут.

С другой стороны, Vim не имеет той проблемы. Это не использует связанной с GUI базы данных и ничего не помещает в recently-used.xbel. Это было создано для цели только для консоли, хотя gVim также существует. На самом деле, на некотором системном Vim Ваш единственный выбор редактора. Таким образом, это более безопасно, чем gedit на основании не порождения тех же проблем. Вы все еще редактируете как корень в обоих случаях, таким образом, Вы могли вызвать проблемы с неподходящим редактированием.

Согласно этому сообщению в блоге:

В первый раз Вы используете энергию, файл ~/.viminfo создается, и если Вы используете sudo vim в первый раз Вы используете энергию после установки его в новой системе, полномочий на ~/.viminfo установят владельца для укоренения вместо пользователя по умолчанию.

В то время как автор указывает, что это может привести к проблемам, нет ничего сложного - просто chown файл назад себе.

См. также:

22
ответ дан 23 November 2019 в 01:12

Ссылка очень старая (2013). Он рекомендует использовать gksudo или gksu для графических приложений, но оба они устаревают. Позже принятый ответ также предполагает sudo -H.

Общий консенсус в сообществе Ask Ubuntu в последнее время заключается в использовании:

sudo -H gedit /path/to/filename

Единственной проблемой остается то, что sudo не имеет профиля для настроек вкладок, расширений , перенос слов, имя шрифта, размер шрифта и т. д. Вы можете наследовать их из своего профиля пользователя, хотя и с помощью скрипта-обертки, подобного следующему: Как я могу синхронизировать мой корневой gedit с предпочтениями моего пользователя gedit?

2
ответ дан 23 November 2019 в 01:12

Да, это безопасно для использования sudo vim. Проблемы, с которыми я сталкиваюсь:

  • Необходимо выйти из файла и заново открыть с помощью sudo vim, чтобы иметь возможность редактировать.

  • Наличие рута vimrc по умолчанию, а не моих пользовательских полезных вещей.

Вот функция, которую вы можете добавить в bashrc, чтобы позволить vim автоматически выполнять sudo, если вы не можете редактировать файл обычным образом.

vim() {
    #only good for auto-sudo. delete if no sudo privileges.
    #If you're not just opening a single file, let's not use this.
    if [[ "$#" -ne 1 ]]; then
        command vim "$@"
    #cases: if we can write to the file, or the file doesn't exist and we can make new files in that directory
    elif [[ -w "$1" || ( -w $(dirname "$1") && ! -f "$1" ) ]]; then
        # \vim or 'vim' only escape aliases, not functions
        command vim "$1"
    else
        sudo env HOME="$HOME" vim -u $HOME/.vimrc "$1"
    fi
}
2
ответ дан 23 November 2019 в 01:12

Также возможно использовать sudoedit достигнуть этого; это открывает временную копию файла в Вашем редакторе с Вашим редактором, работающим как Вы. Из страницы справочника:

  1. Временные копии сделаны из файлов быть отредактированными с набором владельца пользователю вызова.

  2. Редактор, указанный политикой, выполняется для редактирования временных файлов. sudoers политика использует SUDO_EDITOR, VISUAL и EDITOR переменные среды (в том порядке). Если ни один из SUDO_EDITOR, VISUAL или EDITOR установлены, первая программа, перечисленная в редакторе sudoers(5) опция используется.

  3. Если они были изменены, временные файлы копируются назад в свое исходное местоположение, и временные версии удалены.

Это хорошо работает с энергией (это - то, что я обычно делаю), и я предполагаю, что это позволило бы Вам использовать gedit также. Существуют некоторые ограничения безопасности.

15
ответ дан 23 November 2019 в 01:12

Хорошо использовать vi в качестве корня. Там будет временами, когда необходимо отредактировать файл, который требует sudo или полномочий пользователя root, как изменение файла сетевых интерфейсов или возможно редактирование sshd файла конфигурации. Используя поддерживают графический материал, плохо, потому что люди соединились бы с IRC или просмотрели бы веб-сайты как корень. Если бы они заразились вирусом при выполнении так, то он имел бы полный корневой доступ.

1
ответ дан 23 November 2019 в 01:12

Что-то, что не было упомянуто в других ответах, - то, что рабочая энергия с корнем даст корень priviledges любым плагинам, которые Вы установили. Так, вопрос того, безопасно ли работать как корень, зависит от того, доверяете ли Вы тем сменным разработчикам (или участники их проекта) для не владения системой к ее ядру.

Vim обычно исследуется специалистами по обслуживанию пакета во всех дистрибутивах Linux, таким образом, легко доверять. Однако плагины энергии обычно устанавливаются непосредственно от GitHub repos и обычно имеют намного меньше пользователей, контролирующих (возможно, ноль). Другими словами, там не исследует процесс с ними.

Если Вы не загружаете плагины, в то время как в корне, то я предполагаю выполнение, поскольку корень зависит от того, доверяете ли Вы разработчикам энергии. Можно пропустить необходимость доверять им, однако, при помощи sudoedit, который сделан теми же разработчиками sudo, людьми, которым мы уже доверили корневой доступ так или иначе. GKFX и NieDzejkob уже упомянули, почему sudoedit идеален. Помимо точки, что Вы не должны доверять корневой доступ ни к кому больше помимо разработчиков sudo, можно загрузить все плагины, которым Вы уже доверили свою учетную запись обычного пользователя.

1
ответ дан 23 November 2019 в 01:12

Другие вопросы по тегам:

Похожие вопросы: