Почему sudoedit пишет во временный каталог?

10

Я использовал sudoeditдля создания файла:

 $ sudoedit /etc/systemd/system/apache2.service

но когда я пошел сохранить файл, он записал его во временный каталог (/ var / temp / blahblah). Что здесь происходит? Почему он не сохраняет его в системном каталоге?

Тайлер Дурден
источник

Ответы:

22

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

Стивен Китт
источник
Некоторые редакторы IIRC также проведут базовые проверки работоспособности, чтобы убедиться, что компьютерные изменения не были внесены, но я не уверен, насколько это распространено.
Фонд Моники иск
1
@NicHartley: в общем случае это сложно сделать, потому что существует так много разных способов сделать свой компьютер кирпичным. Это, как правило, зависит от приложения, например, visudoдля /etc/sudoers.
Кевин
@Kevin Ой, упс, я думаю , что я путать visudoдля sudoedit. Я знал, что visudoсделал это точно. Спасибо за разъяснение этого!
Фонд Моника иск
1

Это хорошо объяснено на sudoстранице руководства . Описание -e(что sudoeditэквивалентно) говорит:

-e

Опция -e(edit) указывает, что вместо запуска команды пользователь хочет отредактировать один или несколько файлов. Вместо команды строка " sudoedit" используется при обращении к политике безопасности. Если пользователь авторизован политикой, предпринимаются следующие шаги:

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

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

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


источник