Иногда я случайно удаляю свои данные через SHIFT+DELETE.
Хуже того, я даже не делаю резервную копию данных перед их удалением.
Если вы похожи в этом плане на меня, вот хорошая новость для вас.
Существует простая, но полезная утилита командной строки под названием «chattr» (сокращение от Change Attribute), которую можно использовать для предотвращения случайного удаления или изменения файлов и папок в Unix-подобных дистрибутивах.
Он применяет/удаляет определенные атрибуты к файлу или папке в вашей системе Linux.
Таким образом, никто не сможет удалять или изменять файлы и папки случайно или преднамеренно, даже как пользователь root.
Звучит круто, не правда ли?
В этом кратком руководстве мы увидим, как использовать chattr в режиме реального времени, чтобы предотвратить случайное удаление файлов и папок в Linux.
Предотвращение случайного удаления или изменения файлов и папок в Linux
По умолчанию Chattr доступен в большинстве современных операционных систем Linux.
Так что давайте не будем беспокоиться об установке.
Синтаксис команды chattr по умолчанию:
chattr [operator] [switch] [filename]
- Оператор «+» вызывает добавление выбранных атрибутов к существующим атрибутам файлов.
- Оператор ‘-‘ заставляет их удалить.
- Оператор ‘=’ заставляет их быть единственными атрибутами.
Позвольте мне создать файл с именем file.txt в моем текущем каталоге.
$ touch file.txt
$ > file.txt
Теперь я собираюсь применить атрибут «i», который сделает файл неизменным.
Это означает, что вы не можете удалять, изменять файл, даже если вы являетесь владельцем файла и пользователем root.
$ sudo chattr +i file.txt
$ lsattr file.txt
Вывод:
----i---------e---- file.txt
$ 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
Как вы заметили в приведенных выше выводах, мы не можем удалить или изменить файл даже как пользователь root.
Чтобы отозвать атрибуты, просто используйте ключ «-i», как показано ниже.
$ sudo chattr -i file.txt
$ echo 'Hello World!' >> file.txt
$ cat file.txt Hello World!
$ rm file.txt
Предотвращение случайного удаления и изменения папок на Linux
Создайте каталог с именем dir1 и файл file.txt внутри этого каталога.
$ mkdir dir1 && touch dir1/file.txt
Теперь сделайте этот каталог и его содержимое (file.txt) неизменным, используя команду:
$ sudo chattr -R +i dir1
Где:
- -R – рекурсивно сделает dir1 и его содержимое неизменным.
- + i – делает каталог неизменным.
$ rm -fr dir1
$ sudo rm -fr dir1
Вы получите следующий вывод:
rm: cannot remove 'dir1/file.txt': Operation not permitted
$ 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 file.txt
$ cat dir1/file.txt
Пример вывода:
Hello World!
Как видите, мы можем добавить содержимое. Э
то означает, что мы можем изменять файлы и папки.
Давайте попробуем удалить файл или папку.
$ 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
Чтобы удалить атрибуты, выполните следующие команды:
Для файлов:
$ sudo chattr -R -a file.txt
Для каталогов:
$ sudo chattr -R -a dir1/
Теперь вы можете удалять или изменять файлы и папки как обычно.
Для более подробной информации обратитесь к справочным страницам.
$ man chattr
Заключение
Резервное копирование и защита данных – одна из основных задач системного администратора Linux.
На рынке доступно множество бесплатных и коммерческих программ для защиты данных.
К счастью, у нас есть этот встроенный инструмент, который помогает нам защитить данные от случайного удаления или изменения.
Chattr может использоваться как дополнительный инструмент для защиты важных системных файлов и данных в вашей системе Linux.
спасибо, всё это очень полезно и буду пользоваться. люблю линукс
Всегда рады 🙂