Поиск по сайту:

Предотвратите случайное удаление или изменение файлов и папок в 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

Статьи по данной тематике