Как использовать команду Chattr в Linux

chattr (change attribute) команда в Linux – это мощный инструмент, используемый для изменения атрибутов файлов в файловой системе ext2, ext3 или ext4. Она позволяет пользователям устанавливать определенные атрибуты, которые контролируют доступ к файлам и их изменение. Например, опция +i может сделать файл неизменяемым, то есть его нельзя изменить, удалить или переименовать даже пользователю root, пока атрибут immutable не будет снят. Другие атрибуты включают +a, который позволяет открывать файл только в режиме добавления, и +c, который помечает файл для сжатия. Эта команда особенно полезна для системных администраторов, которым необходимо обеспечить строгий контроль доступа и защитить важные системные файлы от случайных или злонамеренных изменений. Команду chattr следует использовать с осторожностью, так как неправильное применение может ограничить доступ к файлам нежелательным образом.

Предварительные условия

  • Сервер под управлением операционной системы Linux.
  • На сервере настроен пароль root.

Основной синтаксис

Ниже приведен основной синтаксис команды chattr:

chattr [OPTIONS] [OPERATOR][ATTRIBUTES] FILE

Краткое объяснение каждой опции приведено ниже:

  • +: Используется для добавления определенных атрибутов к файлу.
  • -: Используется для удаления определенных атрибутов из файла.
  • =: Используется для установки указанных атрибутов в качестве единственных атрибутов.
  • a: Можно открыть только в режиме добавления для записи.
  • A: Запись atime не обновляется.
  • c: Автоматически сжимает файл.
  • i: Защитите свой файл от случайного удаления.
  • S: Изменения файлов записываются на диск синхронно.

Защита файла от случайного удаления

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

Для лучшего понимания создайте каталог с именем dir1 и файл с именем file1 с помощью следующей команды:

mkdir dir1
touch file1

Затем выведите атрибуты файлов file1 и dir1 с помощью следующей команды:

ls -l

Вывод:

drwxr-xr-x 2 root root 4096 May  3 11:56 dir1
-rw-r--r-- 1 root root    0 May  3 11:56 file1

Далее установите флаги +i на dir1 и file1, чтобы никто не смог удалить файл.

chattr +i dir1
chattr +i file1

Далее проверьте атрибут с помощью следующей команды:

ls -l

Выходные данные:

drwxr-xr-x 2 root root 4096 May  3 11:56 dir1
-rw-r--r-- 1 root root    0 May  3 11:56 file1

Теперь попробуйте удалить файл и каталог:

rm -rf file1 dir1

Вывод:

rm: cannot remove ‘file1’: Operation not permitted
rm: cannot remove ‘dir1’: Operation not permitted

Теперь попробуйте переименовать файл:

mv file1 file2

Выход:

mv: cannot move ‘file1’ to ‘file2’: Operation not permitted

Теперь попробуйте изменить разрешение файла:

chmod 777 file1

Вывод:

chmod: changing permissions of ‘file1’: Operation not permitted

Как сбросить атрибуты для файлов

Вы также можете использовать команду chattr, чтобы сбросить атрибут файла, который мы установили в предыдущем шаге. Таким образом, любой человек сможет изменять и удалять файл.

Вы можете использовать флаг -i, чтобы удалить атрибут из файла и каталога:

chattr -i file1 dir1

Теперь вы можете проверить состояние файла и каталога с помощью следующей команды:

lsattr

Вывод:

-------------e-- ./dir1
-------------e-- ./file1

Разрешить добавлять данные без изменения существующих данных в файле

Если вы хотите разрешить всем пользователям только добавлять данные без модификации или изменения существующих данных. Тогда вы можете использовать флаг +a для файла.

Давайте создадим новый файл с некоторым содержимым:

echo "Hi How Are You" > newfile.txt

Затем установим для файла атрибут +a:

chattr +a newfile.txt

Теперь попробуйте заменить уже существующий контент:

echo "I am replacing" > newfile.txt

Вы должны получить следующую ошибку:

bash: newfile.txt: Operation not permitted

Теперь попробуйте добавить новое содержимое в существующий файл:

echo "This is new content" >> newfile.txt

Теперь проверьте содержимое файла:

cat newfile.txt

Вывод:

Hi How Are You
This is new content

Рекурсивная защита каталогов

Вы можете использовать флаг -R вместе с +i для рекурсивной защиты каталога и подкаталогов.

Сначала создайте каталог и подкаталоги с помощью следующей команды:

mkdir -p test/dir1/dir2
mkdir -p test/dir3/dir4
mkdir -p test/dir5/dir6

Теперь защитите тестовый каталог и все подкаталоги с помощью следующей команды:

chattr -R +i test

Теперь попробуйте удалить тестовый каталог со всеми подкаталогами:

rm -rf test/

Вы должны получить следующую ошибку:

rm: cannot remove ‘test/dir1/dir2’: Permission denied
rm: cannot remove ‘test/dir5/dir6’: Permission denied
rm: cannot remove ‘test/dir3/dir4’: Permission denied

Теперь сбросьте атрибут из тестового каталога с помощью следующей команды:

chattr -R -i test

Теперь вы можете удалить тестовый каталог со всеми подкаталогами.

Заключение

В этом руководстве вы узнали, как защитить файлы и каталоги с помощью команды chattr. Надеюсь, это поможет вам защитить важные файлы конфигурации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *