Предотвратите случайное удаление или изменение файлов и папок в Linux
Иногда я не соображаю и случайно нажимаю SHIFT+DELETE на свои данные. Что еще хуже, я даже не делаю резервную копию данных перед их удалением. Если вы чем-то похожи на меня, вот для вас хорошие новости. Я знаю полезную утилиту командной строки под названием "chattr", которая используется для предотвращения случайного удаления или изменения файлов и папок в Linux.
Что такое Чатр?
Chattr, сокращение от Chattrange Attribute, применяет/удаляет определенные атрибуты к файлу или папке в вашей системе Linux. Таким образом, никто не может удалить или изменить файлы и папки случайно или намеренно, даже как пользователь root. Звучит полезно, не так ли? Действительно!
Загрузить – Бесплатная электронная книга: «Essential Linux Toolkit»
Предотвратите случайное удаление или изменение файлов и папок в Linux с помощью Chattr
По умолчанию Chattr предустановлен во многих операционных системах Linux. Так что не будем заморачиваться с установкой.
Синтаксис команды chattr
по умолчанию:
chattr [operator] [switch] [filename]
В chatr есть следующие операторы:
- Оператор '
+
' вызывает добавление выбранных атрибутов к существующим атрибутам файлов. - Оператор '
-
' приводит к их удалению. - Оператор '
=
' делает их единственными атрибутами, которые имеют файлы.
У Chattr есть разные атрибуты, а именно — aAcCdDeijsStTu. Каждая буква присваивает файлу определенный атрибут, как указано ниже.
- a — только добавить,
- A – обновлений времени нет,
- c — сжатый,
- C – копирование при записи отсутствует,
- d — дампа нет,
- D — синхронное обновление каталога,
- e — формат экстента,
- i – неизменяемый,
- j — ведение журнала данных,
- P — иерархия проекта,
- s — безопасное удаление,
- S — синхронные обновления,
- t – без слияния хвостов,
- T — вершина иерархии каталогов,
- u – невозможно удалить.
В этом уроке мы обсудим использование двух атрибутов, а именно a и i, которые используются для предотвращения удаления файлов и папок.
Предотвращение случайного удаления файлов в Linux
Позвольте мне создать файл с именем file.txt
в моем текущем каталоге.
touch file.txt
Или,
> file.txt
Теперь я собираюсь применить атрибут "i
", который сделает файл неизменяемым. Это означает, что вы не можете удалить или изменить файл, даже если вы являетесь владельцем файла и пользователем root
.
sudo chattr +i file.txt
Вы можете проверить атрибуты файла с помощью команды:
lsattr file.txt
Пример вывода:
----i---------e---- file.txt
Сделайте файлы неизменяемыми с помощью командыchattr в Linux
Теперь попробуйте удалить файл как обычный пользователь или с привилегиями sudo
.
rm file.txt
Пример вывода:
rm: cannot remove 'file.txt': Operation not permitted
Позвольте мне попробовать с помощью команды sudo:
sudo rm file.txt
Пример вывода:
rm: cannot remove 'file.txt': Operation not permitted
Давайте попробуем добавить некоторое содержимое в текстовый файл.
echo 'Hello World!' >> file.txt
Пример вывода:
bash: file.txt: Operation not permitted
Предотвратите случайное удаление файлов в Linux с помощью Chattr
Даже если вы попытаетесь удалить файл из файлового менеджера в графическом режиме, вы не сможете его удалить.
Запретить удаление файлов в Linux
Как вы заметили в приведенных выше выводах, мы не можем удалить или изменить файл даже как пользователь root
.
Отменить атрибуты
Чтобы отозвать атрибуты, просто используйте переключатель "-i
", как показано ниже.
sudo chattr -i file.txt
Теперь неизменяемый атрибут удален. Теперь вы можете изменить или удалить файл по своему усмотрению.
echo 'Hello World!' >> file.txt
$ cat file.txt
Hello World!
rm file.txt
Удалите неизменяемые атрибуты файла с помощью chatr
Аналогичным образом вы можете ограничить случайное удаление или изменение каталогов, как описано в следующем разделе.
Предотвращение случайного удаления и изменения папок в Linux
Создайте каталог с именем dir1
и файл с именем file.txt
внутри этого каталога.
mkdir dir1 && touch dir1/file.txt
Теперь сделайте этот каталог и его содержимое (file.txt) неизменяемыми с помощью команды:
sudo chattr -R +i dir1
Где,
-R
– рекурсивно сделает каталог dir1 и его содержимое неизменяемыми.+i
— делает каталог неизменяемым.
Теперь попробуйте удалить каталог либо как обычный пользователь, либо с помощью пользователя sudo.
rm -fr dir1
sudo rm -fr dir1
Вы получите следующий результат:
rm: cannot remove 'dir1/file.txt': Operation not permitted
Попробуйте добавить какое-либо содержимое в файл с помощью команды «echo
». Ты сделал это? Конечно, ты не мог!
Предотвращение случайного удаления и изменения папок в Linux
Удалить атрибуты
Чтобы отозвать атрибуты обратно, запустите:
sudo chattr -R -i dir1
Теперь вы можете удалить или изменить содержимое этого каталога как обычно.
Предотвратите случайное удаление файлов и папок, но разрешите операцию добавления в Linux.
Теперь мы знаем, как предотвратить случайное удаление и изменение файлов и папок. Далее мы собираемся запретить удаление файлов и папок, но разрешим запись файла только в режиме добавления. Это означает, что вы не можете редактировать, изменять существующие данные в файле, переименовывать и удалять файл. Открыть файл для записи можно только в режиме добавления.
Чтобы установить атрибут режима добавления для файла/каталога, мы делаем следующее:
Для файлов:
sudo chattr +a file.txt
Для каталогов:
sudo chattr -R +a dir1
Файл/папка с установленным атрибутом «a» может быть открыта только в режиме добавления для записи.
Добавьте некоторое содержимое в файл(ы), чтобы проверить, работает он или нет.
echo 'Hello World!' >> file.txt
echo 'Hello World!' >> dir1/file.txt
Проверьте содержимое файла с помощью команды cat:
cat file.txt
cat dir1/file.txt
Пример вывода:
Hello World!
Разрешить операцию добавления в Linux с помощью командыchattr
Как видите, мы можем добавить содержимое. Это означает, что мы можем изменять файлы и папки.
Давайте попробуем удалить файл или папку сейчас.
rm file.txt
Выход:
rm: cannot remove 'file.txt': Operation not permitted
Попробуем удалить папку:
rm -fr dir1/
Или попробуйте с помощью sudo:
sudo rm -fr dir1/
Пример вывода:
rm: cannot remove 'dir1/file.txt': Operation not permitted
Предотвратите случайное удаление файлов и папок, но разрешите операцию добавления в Linux.
Удалить атрибуты
Чтобы удалить атрибуты, выполните следующие команды:
Для файлов:
sudo chattr -R -a file.txt
Для каталогов:
sudo chattr -R -a dir1/
Теперь вы можете удалять или изменять файлы и папки как обычно.
Более подробную информацию можно найти на страницах руководства.
man chattr
Подведение итогов
Резервное копирование и защита данных — одна из основных задач системного администратора Linux. На рынке доступно множество бесплатных и коммерческих программ для защиты данных. К счастью, у нас есть встроенный инструмент, который помогает нам защитить данные от случайного удаления или изменения с помощью Chattr. Chattr можно использовать как дополнительный инструмент для защиты важных системных файлов и данных в вашей системе Linux.
Рекомендуем прочитать:
- Простой способ защитить файлы от случайного удаления в Linux
- Как избежать случайного завершения работы или перезагрузки Linux