
У меня есть скрипт, который проверяет наличие файла, и если он существует, считывает из него список адресов электронной почты для отправки уведомлений. Когда мне не нужно получать уведомления, например, когда я на работе и уже отслеживаю вывод, я переименовываю его. Я просто не хочу, чтобы другие администраторы могли его удалить.
Я знаю, chattr +i
что это сделает файл неизменяемым, но я хочу только предотвратить удаление файла. Я полагаю, что программа chattr будет использовать номер inode для отслеживания атрибутов, а не имя файла.
Есть ли утилита, которая может это сделать?
решение1
Этот комментарий о «других администраторах» намекает, что у вас естьroot
привилегия в системе, где вы хотите сохранить файл. Все, что вы могли бы настроить в плане разрешений, может быть отменено кем-то с такими же привилегиями.
Если это не проблема, и ни у кого нет расширенных привилегий, то вы можете просто поместить файл в /tmp
или /var/tmp
, в которых обычно установлен t-бит (предотвращающий доступ других пользователей).непривилегированные пользователи изудалениеВы можете изменить права доступа к файлу, чтобы сделать его доступным для записи группой (и для изменения другими членами той же группы).
решение2
"Другие администраторы" злонамеренны? Они хотят вас достать? Если да, то, вероятно, вы ничего не сможете сделать.
Если нет, возможно, самое простое решение — изменить скрипт, чтобы поместить файл в ваш домашний каталог. Вариант этого — сделать жесткую ссылку(и) на файл в другом каталоге(ах); пока они не удаляются (не отключаются)всессылки, файл останется нетронутым. (Вам следует написать еще один скрипт, чтобы пройти по всем местоположениям ссылок, найти ту, которая все еще существует, а затем повторно связать все те, которые были удалены.) Будьте осторожны, так как некоторые редакторы разрывают ссылки (например, если вы редактируете файл).
Это может решить проблему, даже если «другие администраторы» злонамеренны и/или хотят вас навредить, если они неопытны и невнимательны.
Или сделайте файл неизменяемым и измените скрипт так, чтобы он использовал какой-то другой тест для определения необходимости отправки писем.
решение3
Возвращаясь к вопросу, поднятому в некоторых других ответах, вы могли бы использовать эту mv
утилиту, чтобы предложить социальный барьер:
mv yourfile THIS_IS_user38537_FILE_PLEASE_DO_NOT_REMOVE
решение4
[Замена старого ответа]
Вы можете просто сделать жесткую ссылку на файл:
ln email_file hard_link
Тогда, если он будет удален, он все равно будет существовать и его можно будет легко восстановить.
[Старый ответ, основанный на непонимании проблемы]
Одним из решений было бы сделать сам скрипт неизменяемым с помощью chattr
, но включать и выключать его не переименовывая, а с помощью наличия или отсутствия пустого файла, который вы можете позволить себе потерять. Назовите его, скажем,
snoozebutton
. Если он существует, скрипт не уведомляет. Если его нет, скрипт уведомляет. Такой подход обеспечивает безопасность, если кто-то случайно его удалит: вы получаете свои уведомления, а также уведомление о том, что что-то произошло с snoozebutton
.
Это предполагает, что вам не нужно часто изменять скрипт, конечно. Если вам это нужно, вам понадобится небольшой служебный скрипт, который будет запущен chattr
, затем запустит редактор, а затем chattr
снова заблокирует его.