Редактирование файла без разрешения перезаписи

Можно ли установить разрешения для файла, чтобы он был доступен для редактирования, но без разрешения на перезапись?

Я имею в виду возможность редактировать файл с помощью текстового редактора, но отрицая любую попытку заменить файл путем перезаписи. Пользователь root . Я знаю, что это не общая структура разрешения файла unix, но я ищу сложный подход.

У меня есть пакет файлов, так как некоторые из них были отредактированы / настроены из исходной версии. При обновлении пакета с новой версией я хочу заменить любой нетронутый файл, но защищать настроенные файлы (не пропустить редактирование). В настоящее время я должен сделать это вручную: запись файла, который был отредактирован, а не заменен в новом обновлении.

4 Solutions collect form web for “Редактирование файла без разрешения перезаписи”

Поскольку все пакеты будут пытаться полностью переопределить файл конфигурации, вы можете установить файл в режиме добавления только,

chattr +a bb

Таким образом, вы не можете удалить / усечь файл, просто добавьте его.

Но в этом случае вы остановите менеджера пакетов из системы обновления.

Если вы просто не хотите, чтобы менеджер пакетов переопределял ваши настроенные файлы, вы могли бы держать пакет на debian / ubuntu, вы могли бы сделать:

echo package-name hold | dpkg --set-selections

Таким образом, этот пакет не будет обновлен, ваши файлы сохранены.

Это зависит от того, что именно означает «перезаписать». Если это означает изменение данных существующего файла, то это невозможно, потому что операционная система не имеет возможности отличить «редактирование» от «перезаписывания» – они оба изменяют данные файла. Если это означает удаление и создание нового файла с тем же именем (или переименование нового файла на это имя), это может быть достигнуто путем удаления разрешения на запись из каталога, содержащего файл. Очевидно, это применимо ко всем файлам в этом каталоге, но не к одному конкретному файлу.

Прежде всего, сделайте дег из важных файлов пакета. Затем обновите. После того, как вы установили новую версию, отмените сохранение в другом каталоге и откорректируйте файлы, которые вы редактировали с помощью новых пакетов. Таким образом, вы увидите, что новые файлы также не имеют важных вещей, которые нужно добавить / изменить (т. Е. Разработчики могут также внести изменения в файлы, которые вы редактировали, и эти изменения также должны быть сохранены. просто замените файлы new-from-new-package своими старыми изменениями, не проверяя сначала, если эти новые файлы не содержат новую важную информацию)

Как root:

 chattr +i foo.txt 

Затем попробуйте:

 vim foo.txt 

измените файл в vim и попытайтесь его сохранить.

Пример использования – chattr + i /etc/resolv.conf, так что ваш отвратительный сервис сетевого менеджера не перезаписывает его каким-то загрузочным файлом, который он получает из неправильно сконфигурированного домашнего / офисного маршрутизатора.

Вы можете отменить его:

 chattr -i foo.txt 

В модели файловой системы Linux это лучшее, что вы можете сделать. Другого решения нет.

  • Почему grep перезагружает компьютер?
  • Как вывести «разреженность» файла?
  • Как я могу открыть файлы на моем внешнем жестком диске?
  • Как сортировать имена файлов в числовом порядке и измененный порядок времени?
  • grep string из содержимого команды file, а затем удалить файл
  • Более быстрый способ переименовать повторяющиеся файлы (идентифицированные fdupes) в другом каталоге?
  • Как ls с globbing для скрытых файлов?
  • Что такое "Устройство: 802h / 2050d" означает inode?
  • Копирование последовательных файлов
  • Как вы сравниваете две папки и копируете разницу в третью папку?
  • Используя цикл «for», запустите сценарий для всех файлов в каталоге
  • Свободное место на диске из файла журнала JBoss, который все еще записывается в
  • Linux и Unix - лучшая ОС в мире.