5 команд «chattr», позволяющих сделать важные файлы НЕИЗМЕНИМЫМИ (неизменяемыми) в Linux
chattr (Изменить атрибут) — это утилита командной строки Linux, которая используется для установки/снятия определенных атрибутов файла в системе Linux для защиты от случайного удаления или изменения важных файлов и папок, даже если вы вошли в систему. в качестве пользователя root.
В собственных файловых системах Linux, например, ext2, ext3, ext4, btrfs и т. д., поддерживаются все флаги, хотя не все флаги поддерживаются всеми неродными ФС. Нельзя удалить или изменить файл/папку после того, как атрибуты установлены с помощью командыchattr, даже если у вас есть полные права на это.
Это очень полезно для установки атрибутов в системных файлах, таких как файлы passwd и теневые файлы, в которых содержится информация о пользователе.
Синтаксис чатра
chattr [operator] [flags] [filename]
Атрибуты и флаги
Ниже приведен список общих атрибутов и связанных с ними флагов, которые можно установить/снять с помощью командыchattr.
- Если доступ к файлу осуществляется с установленным атрибутом «A», его запись atime не обновляется.
- Если файл изменен с установленным атрибутом «S», изменения синхронно обновляются на диске.
- Файл имеет атрибут «a», его можно открыть только в режиме добавления для записи.
- Файл имеет атрибут «i», его невозможно изменить (неизменяемый). Означает отсутствие переименования, создание символических ссылок, выполнение, запись, только суперпользователь может отменить установку атрибута.
- Устанавливается файл с атрибутом «j», вся информация о нем обновляется в журнале ext3, а затем обновляется в самом файле.
- Файл имеет атрибут «t», без слияния хвостов.
- Файл с атрибутом «d» больше не будет кандидатом на резервное копирование при запуске процесса дампа.
- При удалении файла с атрибутом «u» его данные сохраняются. Это позволяет пользователю запросить его восстановление.
Оператор
- + : добавляет атрибут к существующему атрибуту файлов.
- – : удаляет атрибут существующего атрибута файлов.
- = : сохранить существующие атрибуты файлов.
Здесь мы собираемся продемонстрировать некоторые примеры командыchattr для установки/снятия атрибутов файла и папок.
1. Как добавить атрибуты к файлам, чтобы защитить их от удаления
В демонстрационных целях мы использовали папку demo и файл important_file.conf соответственно. Прежде чем настраивать атрибуты, убедитесь, что у существующих файлов есть какие-либо атрибуты, установленные с помощью команды «ls -l». Вы видели результаты? В настоящее время атрибуты не установлены.
[root@tecmint tecmint]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf
Чтобы установить атрибут, мы используем знак +, а для его отмены используем знак – с помощью командыchattr. Итак, давайте установим неизменяемый бит для файлов с флагами +i, чтобы никто не мог удалить файл, даже у пользователя root нет разрешения на его удаление.
[root@tecmint tecmint]# chattr +i demo/
[root@tecmint tecmint]# chattr +i important_file.conf
Примечание. Неизменяемый бит +i может быть установлен только пользователем суперпользователя (т. е. root), или пользователь с привилегиями sudo может установить .
После установки неизменяемого бита давайте проверим атрибут с помощью команды «lsattr».
[root@tecmint tecmint]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf
Теперь попытался принудительно удалить, переименовать или изменить разрешения, но это невозможно, говорит «Операция не разрешена».
[root@tecmint tecmint]# rm -rf demo/
rm: cannot remove âdemo/â: Operation not permitted
[root@tecmint tecmint]# mv demo/ demo_alter
mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[root@tecmint tecmint]# chmod 755 important_file.conf
chmod: changing permissions of âimportant_file.confâ: Operation not permitted
2. Как снять атрибут в файлах
В приведенном выше примере мы увидели, как установить атрибут для защиты и предотвращения случайного удаления файлов. Здесь, в этом примере, мы увидим, как сбросить разрешения (сбросить атрибут) и позволить сделать файлы изменяемыми или изменяемыми с помощью < Strong>-i флаг.
[root@tecmint tecmint]# chattr -i demo/ important_file.conf
После сброса разрешений проверьте неизменяемый статус файлов с помощью команды «lsattr».
[root@tecmint tecmint]# lsattr
---------------- ./demo
---------------- ./important_file.conf
В приведенных выше результатах вы видите, что флаг «-i» удален, это означает, что вы можете безопасно удалить все файлы и папки, находящиеся в папке tecmint.
[root@tecmint tecmint]# rm -rf *
[root@tecmint tecmint]# ls -l
total 0
3. Как защитить файлы /etc/passwd и /etc/shadow
Установка неизменяемого атрибута для файлов /etc/passwd или /etc/shadow защищает их от случайного удаления или взлома, а также отключает создание учетных записей пользователей.
[root@tecmint tecmint]# chattr +i /etc/passwd
[root@tecmint tecmint]# chattr +i /etc/shadow
Теперь попробуйте создать нового пользователя системы, вы получите сообщение об ошибке 'невозможно открыть /etc/passwd'.
[root@tecmint tecmint]# useradd tecmint
useradd: cannot open /etc/passwd
Таким образом, вы можете установить неизменяемые разрешения для важных файлов или файлов конфигурации системы, чтобы предотвратить их удаление.
4. Добавьте данные без изменения существующих данных в файле.
Предположим, вы хотите разрешить всем просто добавлять данные в файл без изменения или изменения уже введенных данных. Вы можете использовать атрибут «a» следующим образом.
[root@tecmint tecmint]# chattr +a example.txt
[root@tecmint tecmint]# lsattr example.txt
-----a---------- example.txt
После установки режима добавления файл можно открыть для записи данных только в режиме добавления. Вы можете отключить атрибут добавления следующим образом.
[root@tecmint tecmint]# chattr -a example.txt
Теперь попробуйте заменить уже существующее содержимое в файле example.txt, вы получите сообщение об ошибке «Операция не разрешена».
[root@tecmint tecmint]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted
Теперь попробуйте добавить новое содержимое в существующий файл example.txt и проверьте его.
[root@tecmint tecmint]# echo "replace contain on file." >> example.txt
[root@tecmint tecmint]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.
5. Как защитить каталоги
Чтобы защитить весь каталог и его файлы, мы используем переключатель «-R» (рекурсивно) с флагом «+i» вместе с полным путем к папке.
[root@tecmint tecmint]# chattr -R +i myfolder
После установки атрибута рекурсии попробуйте удалить папку и ее файлы.
[root@tecmint tecmint]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted
Чтобы отменить разрешение, мы используем тот же ключ «-R» (рекурсивно) с флагом «-i» вместе с полным путем к папке.
[root@tecmint tecmint]# chattr -R -i myfolder
Вот и все! Чтобы узнать больше об атрибутах, флагах и параметрах команды chattr, используйте справочные страницы.