Чому sudoedit пише у тимчасовий каталог?


10

Я використовував sudoeditдля створення файлу:

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

але коли я пішов зберегти файл, він записав його у тимчасовий каталог (/ var / temp / blahblah). Що відбувається? Чому це не збереження його в системний каталог?

Відповіді:


22

Сенс sudoeditполягає в тому, щоб дозволити користувачам редагувати файли, до яких вони інакше не були дозволені під час роботи непривілейованого редактора. Щоб цього не сталося, sudoeditкопіює файл, який потрібно редагувати, у тимчасове місце, робить його доступним для запиту користувачем, що запитує, і відкриває його в налаштованому редакторі. Ось чому редактор показує непов’язане ім’я файлу у тимчасовому каталозі. Коли редактор виходить, sudoeditперевіряє, чи були внесені якісь зміни, і при необхідності копіює змінений тимчасовий файл у початкове місце.


Деякі редактори IIRC також робитимуть основні перевірки стану безпеки, щоб гарантувати, що не було внесено змін, що впливають на комп’ютер, але я не впевнений, наскільки це звичайно.
Фонд позову Моніки

1
@NicHartley: У загальному випадку це важко зробити, тому що існує стільки різноманітних способів цеглити ваш комп’ютер. Це, як правило, специфічне застосування, наприклад, visudoдля for /etc/sudoers.
Кевін

@Kevin Ой, упс, я думаю , що я плутати visudoдля sudoedit. Я знав, visudoщо це робив точно. Дякуємо, що очистили це!
Позов Моніки

1

Це добре описано в на sudoсторінках керівництва . Опис -e(що sudoeditеквівалентно) говорить:

-e

Параметр -e(редагування) вказує, що замість виконання команди користувач бажає редагувати один або кілька файлів. Замість команди, рядок " sudoedit" використовується для консультацій з політикою безпеки. Якщо користувач уповноважений користувачем полісом, виконуються наступні кроки:

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

Якщо вказаного файлу не існує, він буде створений. Зауважте, що на відміну від більшості команд, якими керує sudo, редактор запускається із середовищем, що викликає користувача, без змін. Якщо з якоїсь причини sudoне вдається оновити файл з його відредагованою версією, користувач отримає попередження, і відредагована копія залишиться у тимчасовому файлі.

Зокрема, зверніть увагу на третій крок: лише якщо файл було змінено в кінці редагування, оригінал змінено. Отже, якщо у вас є програма, яка переглядає файл, це може допомогти уникнути (а) проміжного запису, і (b) непотрібних дій, якщо ви вирішили не змінювати в кінцевому підсумку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.