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

5 команд «chattr», позволяющих сделать важные файлы НЕИЗМЕНИМЫМИ (неизменяемыми) в Linux


chattr (Изменить атрибут) — это утилита командной строки Linux, которая используется для установки/снятия определенных атрибутов файла в системе Linux для защиты от случайного удаления или изменения важных файлов и папок, даже если вы вошли в систему. в качестве пользователя root.

В собственных файловых системах Linux, например, ext2, ext3, ext4, btrfs и т. д., поддерживаются все флаги, хотя не все флаги поддерживаются всеми неродными ФС. Нельзя удалить или изменить файл/папку после того, как атрибуты установлены с помощью командыchattr, даже если у вас есть полные права на это.

Это очень полезно для установки атрибутов в системных файлах, таких как файлы passwd и теневые файлы, в которых содержится информация о пользователе.

Синтаксис чатра
chattr [operator] [flags] [filename]
Атрибуты и флаги

Ниже приведен список общих атрибутов и связанных с ними флагов, которые можно установить/снять с помощью командыchattr.

  1. Если доступ к файлу осуществляется с установленным атрибутом «A», его запись atime не обновляется.
  2. Если файл изменен с установленным атрибутом «S», изменения синхронно обновляются на диске.
  3. Файл имеет атрибут «a», его можно открыть только в режиме добавления для записи.
  4. Файл имеет атрибут «i», его невозможно изменить (неизменяемый). Означает отсутствие переименования, создание символических ссылок, выполнение, запись, только суперпользователь может отменить установку атрибута.
  5. Устанавливается файл с атрибутом «j», вся информация о нем обновляется в журнале ext3, а затем обновляется в самом файле.
  6. Файл имеет атрибут «t», без слияния хвостов.
  7. Файл с атрибутом «d» больше не будет кандидатом на резервное копирование при запуске процесса дампа.
  8. При удалении файла с атрибутом «u» его данные сохраняются. Это позволяет пользователю запросить его восстановление.
Оператор
  1. + : добавляет атрибут к существующему атрибуту файлов.
  2. : удаляет атрибут существующего атрибута файлов.
  3. = : сохранить существующие атрибуты файлов.

Здесь мы собираемся продемонстрировать некоторые примеры команды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, используйте справочные страницы.