Как защитить файлы от случайного удаления root в Linux (chattr +i и другие способы)

Обновлено 28 февраля 2026
Статья полностью переписана и расширена: добавлены современные примеры (Ubuntu 24.04, Debian 12, Fedora 41), сравнительная таблица, реальные кейсы 2024–2025 годов, подробный FAQ и перелинковка.

Быстрый ответ

Самый надёжный и простой способ защитить файл или папку от удаления даже пользователем root это просто установить атрибут immutable. Сделать это можно с помощью команды:

sudo chattr +i /path/to/important/file.conf

После этого файл становится полностью неизменяемым: его нельзя удалить, переименовать, перезаписать или изменить права и самое главное, даже root не сможет.

Проверить атрибуты:

lsattr /path/to/important/file.conf

Снять защиту (когда понадобится):

sudo chattr -i /path/to/important/file.conf

Почему rm работает даже на файлах root

В Linux права доступа (chmod/chown) и владелец файла определяют, кто может читать/писать/выполнять. Но удаление файла это операция на уровне директории, а не самого файла.

Если у пользователя есть право на запись (w) в родительской директории, тогда он легко может удалить любой файл внутри неё, даже если сам файл принадлежит root и имеет 444 права.

Именно поэтому классические команды chmod 444 или chown root:root не спасают от случайного или злонамеренного rm -rf.

Как защитить файлы от случайного удаления root в Linux (chattr +i и другие способы)

Способ №1, chattr +i (immutable) это самый надёжный способ

Атрибут immutable (+i) делает файл или директорию полностью защищённым от любых изменений на уровне файловой системы.

Команды:

Установить защиту sudo

chattr +i /etc/resolv.conf

Установить на всю директорию рекурсивно

sudo chattr -R +i /etc/systemd/network/

Проверить

lsattr -R /etc/systemd/network/

Что блокирует immutable:

  • удаление (rm)
  • переименование (mv)
  • изменение содержимого (echo >, vi, sed -i)
  • изменение прав (chmod)
  • изменение владельца (chown)
  • создание жёстких ссылок (ln)

Ограничения:

  • не работает на tmpfs, proc, sysfs
  • не защищает от физического доступа к диску (dd, загрузка с live-USB)
  • нельзя применить к открытым дескрипторам (если процесс уже держит файл открытым)

Способ №2, sticky bit (t) на директории

Подходит, когда нужно запретить удаление чужих файлов внутри общей директории (классический пример /tmp).

sudo chmod +t /path/to/shared/dir

Символ t в правах директории:

drwxrwxrwt 2 root root 4096 Feb 28 16:40 /tmp

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

Способ №3, ACL (Access Control Lists)

Более гибкий, но сложный вариант. Можно дать конкретному пользователю/группе запрет на удаление.

# Запретить пользователю nazario удалять файл

sudo setfacl -m u:nazario:--- /important/file.conf

# Запретить группе admins

sudo setfacl -m g:admins:--- /important/file.conf

Проверить ACL:

getfacl /important/file.conf

Сравнительная таблица способов защиты

Способ Защищает от удаления Защищает от изменения содержимого Защищает от изменения прав Сложность Поддержка файловых систем
chattr +i Да (полностью) Да Да Низкая ext4, xfs, btrfs
sticky bit (t) Да (только чужие файлы) Нет Нет Низкая Все POSIX
ACL Да (выборочно) Да (выборочно) Да (выборочно) Средняя ext4, xfs, btrfs
chmod 000 / 444 Нет Частично Нет Низкая Все

Реальные кейсы и самые частые ошибки

  • Админ случайно выполнил rm -rf /etc после опечатки в пути → immutable на /etc/resolv.conf и /etc/hosts спасает от катастрофы
  • На сервере с shared хостингом пользователь удалил чужой файл в /var/wwwsticky bit решает проблему
  • Забыли снять +i перед обновлением конфига → apt/yum/dnf падает с ошибкой EPERM
  • Пытались защитить /var/log с помощью +ijournald и rsyslog не могут писать → система «зависает»

Как проверить и снять защиту

Посмотреть все атрибуты

lsattr -a /path/to/file

 

Снять immutable рекурсивно

sudo chattr -R -i /protected/dir/

1. Можно ли защитить файл от root?
Да, chattr +i блокирует любые операции даже от root. Единственный способ обойти — загрузиться с live-USB и отмонтировать раздел.
2. chattr +i работает на всех файловых системах?
Нет. Работает на ext2/3/4, xfs, btrfs. Не работает на tmpfs, proc, sysfs, vfat, ntfs-3g.
3. Что делать, если забыл снять immutable перед обновлением?
sudo chattr -i файл; обновление; sudo chattr +i файл.
4. Можно ли защитить всю папку /etc?
Можно, но опасно. Многие сервисы (NetworkManager, systemd-resolved) не смогут обновлять конфиги. Лучше защищать только отдельные файлы.
5. sticky bit защищает от root?
Нет. Root игнорирует sticky bit и может удалять всё.
6. Есть ли аналог chattr +i в Windows?
Ближайший аналог это атрибут «Только чтение» + запрет изменения через NTFS-разрешения и шифрование EFS/BitLocker.

Заключение

Самый надёжный и простой способ защитить важный файл от случайного или злонамеренного удаления даже пользователем root, то это команда chattr +i. Она делает файл неизменяемым на уровне файловой системы.

Для общих директорий используйте sticky bit, для выборочного доступа следует использовать ACL. Главное правило: защищайте только то, что действительно критично, но всегда оставляйте возможность быстро снять защиту.

Полезные материалы по теме:

 

Понравилась статья?

Помогите Setiwik.ru создавать больше глубоких обзоров и новостей. Один клик и ваш вклад помогает держать серверы включёнными и авторов мотивированными!

Спасибо, что вы с нами!

Nazario

Я Назар. Уже больше десяти лет я работаю с Linux и Windows системами каждый день. Это моя основная профессия и большая часть жизни.
Всё, что ты читаешь на Setiwik.ru, начинается с официальной документации, мануалов и технических спецификаций. Я их изучаю очень внимательно. Но ценность статей появляется именно тогда, когда я беру эту базу и пропускаю через десятки реальных ситуаций: ночные аварии, странные баги, которые не гуглятся с первого раза, выстраданные конфиги и проверенные обходные пути.
Я не обещаю истину в последней инстанции. Но если мой опыт поможет тебе сэкономить хотя бы пару часов нервов и перезагрузок, значит всё это было не зря. Здесь только практика: от тонкой настройки серверов до самых неожиданных ситуаций, которые официальные руководства обычно обходят стороной.
Setiwik.ru это место, где IT становится понятнее и спокойнее. Заходи почаще. Будем разбираться вместе.

Практические инструкции по Windows и Linux
Добавить комментарий