Гид по технологиям

chattr: защита файлов в Linux

• 4 min read • Linux • Обновлено 23 Nov 2025
chattr: защита файлов в Linux
chattr: защита файлов в Linux

Иллюстрация команд chattr и атрибутов файлов

Введение

Команда chattr (change attribute) в Linux изменяет специальные атрибуты файлов на файловых системах ext2, ext3 и ext4. Эти атрибуты добавляют уровни защиты поверх стандартных прав доступа (rwx), например запрещая удаление или разрешая только дозапись.

Краткое определение терминов:

  • Атрибут immutable: файл нельзя изменить, удалить или переименовать до снятия атрибута.
  • Атрибут append-only: файл можно только дописывать, существующие данные остаются неизменными.

Основные флаги и синтаксис

Базовый синтаксис:

chattr [OPTIONS] [OPERATOR][ATTRIBUTES] FILE

Объяснение ключевых операторов и атрибутов:

    • — добавить указанные атрибуты к файлу.
    • — убрать указанные атрибуты.
  • = — установить указанные атрибуты как единственные для файла (перезапись).

Полезные атрибуты:

  • a — файл можно открывать только в режиме дозаписи (append-only).
  • A — не обновлять время последнего доступа (atime).
  • c — пометить файл для сжатия автоматически (если поддерживается).
  • i — сделать файл неизмениемым (immutable).
  • S — записи файла выполняются синхронно на диске.

Важно: chattr выставляет дополнительные защиты поверх стандартных прав доступа; root не всегда сможет обойти эти атрибуты без их снятия.

Практические примеры

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

Создадим каталог и файл:

mkdir dir1
touch file1

Посмотрим список:

ls -l

Применим immutable ко всем объектам:

chattr +i dir1
chattr +i file1

После этого попытки удалить, переименовать или изменить файл выдадут ошибку:

rm -rf file1 dir1
mv file1 file2
chmod 777 file1

Ошибки будут выглядеть примерно так:

rm: cannot remove ‘file1’: Operation not permitted
mv: cannot move ‘file1’ to ‘file2’: Operation not permitted
chmod: changing permissions of ‘file1’: Operation not permitted

Снятие атрибутов

Чтобы вернуть обычное поведение, снимите атрибут immutable:

chattr -i file1 dir1

Проверить атрибуты можно с помощью:

lsattr

Вывод может выглядеть так:

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

Дописывание без изменения существующих данных

Атрибут +a разрешает только дозапись. Пример:

echo "Hi How Are You" > newfile.txt
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 позволяет применить атрибуты ко всем подкаталогам и файлам рекурсивно:

mkdir -p test/dir1/dir2
mkdir -p test/dir3/dir4
mkdir -p test/dir5/dir6
chattr -R +i test
rm -rf test/

Попытка удаления выдаст сообщение о том, что удаление невозможно из‑за отсутствия прав или заблокированных объектов. Для отмены:

chattr -R -i test

Когда chattr не сработает или ограничен

  • Файловые системы, отличные от ext2/3/4 (например XFS, FAT, NTFS) могут не поддерживать все атрибуты chattr. Проверяйте документацию для конкретной FS.
  • Если система использует сетевые файловые системы (NFS), атрибуты могут не применяться или не распространяться на клиентские машины.
  • Атаки на уровне загрузчика или прямой доступ к диску (boot from live-CD) могут обойти атрибуты, если злоумышленник имеет физический доступ.

Совет: для дополнительной защиты используйте сочетание прав доступа, chattr и контроль версий/бэкапов.

Альтернативные подходы

  • ACL (getfacl/setfacl) для более тонкой настройки прав доступа.
  • immutable через kernel security modules (например SELinux) для комплексных политик.
  • Использование систем контроля версий (git) или регулярных резервных копий для отката нежелательных изменений.

Быстрый шпаргалка по командам

  • Добавить immutable: chattr +i filename
  • Удалить immutable: chattr -i filename
  • Добавить append-only: chattr +a filename
  • Применить рекурсивно: chattr -R +i directory
  • Посмотреть атрибуты: lsattr filename
  • Посмотреть обычные права: ls -l

Рекомендации по использованию для ролей

Администратор сервера:

  • Используйте +i для важных конфигурационных файлов (например /etc/fstab, /etc/passwd) только после проверки.
  • Документируйте установленные атрибуты и храните процедуру снятия атрибутов в SOP.

Разработчик приложения:

  • Не назначайте +i на файлы, которые приложение должно обновлять во время работы.
  • Для логов используйте +a, если хотите предотвратить изменение истории.

Операционный персонал:

  • Перед массовым применением -R тестируйте на небольших каталогах.
  • Включите проверку в план восстановления после сбоев.

Критерии приёмки

  • Файл с атрибутом +i не удаляется и не переименовывается обычными командами оболочки.
  • Файл с атрибутом +a принимает только дозапись, попытка перезаписи блокируется.
  • При снятии атрибута (-i или -a) файл возвращается к ожидаемому поведению.

Безопасность и рекомендации

  • chattr не заменяет резервное копирование и контроль доступа уровня пользователя.
  • Не выставляйте атрибуты на критических системных файлах без плана отката.
  • Для автоматизации используйте конфигурационные управленцы (Ansible, Puppet) и храните состояния в декларативном виде.

Часто задаваемые вопросы

Что делает chattr +i и может ли root обойти эту защиту?

chattr +i делает файл неизмениемым. Даже root не сможет изменить файл обычными средствами, пока атрибут не будет снят с помощью chattr -i.

Поддерживает ли chattr файловые системы Btrfs или XFS?

Поддержка зависит от конкретной реализации файловой системы. XFS и Btrfs могут иметь свои способы управления атрибутами; для гарантии используйте ext4 или проверяйте документацию.

Как быстро проверить, какие файлы имеют атрибуты immutable в каталоге?

Можно использовать lsattr -R /path | grep 'i' или комбинировать с find и lsattr для более точной фильтрации.

Итог

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

Сводка:

  • Используйте +i для неизменяемых файлов и +a для дозаписи.
  • Применяйте рекурсивно с осторожностью и тестируйте изменения.
  • Документируйте применения и храните процедуры отката.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро