Как сделать файл неизменяемым в Linux
Предположим, вы хотите защитить от записи некоторые важные файлы в Linux, чтобы их нельзя было удалить или подделать случайно или иным образом.
В других случаях вы можете захотеть предотвратить автоматическую перезапись определенных файлов конфигурации программным обеспечением. Хотя изменение прав собственности или прав доступа к файлам с помощью chown или chmod является одним из способов справиться с этой ситуацией, это не идеальное решение, поскольку оно не может предотвратить любые действия, выполняемые с правами root. Вот когда chattr пригодится.
chattr
это команда Linux, которая позволяет устанавливать или отменять атрибуты файла, которые отделены от стандартных прав доступа к файлу (чтение, запись, выполнение). Соответствующая команда lsattr
которая показывает, какие атрибуты установлены для файла. Хотя атрибуты файла, управляемые chattr
и lsattr
, изначально поддерживались только файловыми системами EXT (EXT2 / 3 / 4), теперь эта функция доступна во многих других встроенных файловых системах Linux, таких как XFS, Btrfs, ReiserFS и т.д.
Рассмотрим, как использовать chattr
, чтобы сделать файлы неизменяемыми в Linux. Базовый синтаксис chattr
заключается в следующем:
$ chattr [-RVf] [оператор] [атрибуты]...
Ниже приведены некоторые из доступных атрибутов.
a
: может быть открыт только в режиме добавления.A
: не обновляйте atime (время доступа к файлу).c
: автоматически сжимается при записи на диск.C
: отключите функцию копирования при записи.i
: установите неизменяемый.s
: надежно удаляется с автоматическим обнулением.
Неизменяемый атрибут
Чтобы сделать файл неизменяемым, вы можете добавить к файлу атрибут immutable
следующим образом. Например, для защиты от записи /etc/passwd
файла:
$ sudo chattr +i /etc/passwd
Обратите внимание, что вы должны использовать права root, чтобы установить или отменить атрибут
immutable
для файла.
Как только файл становится неизменяемым, его нельзя изменить ни одному пользователю. Даже root-пользователь не может изменить, удалить, перезаписать, переместить или переименовать файл. Чтобы снова изменить файл, вам нужно будет снять атрибут неизменяемости.
Чтобы отключить атрибут immutable
, используйте следующую команду:
$ sudo chattr -i /etc/passwd
Если вы хотите рекурсивно сделать неизменяемым сразу весь каталог (например, /etc), включая все его содержимое, используйте -R
опцию:
$ sudo chattr -R +i /etc
Добавить только атрибут
Другим полезным атрибутом является атрибут только для добавления, который заставляет файл только расти. Вы не можете перезаписать или удалить файл с установленным атрибутом только для добавления. Этот атрибут может быть полезен, когда вы хотите предотвратить случайную очистку файла журнала.
Аналогично immutable attribute
, вы можете перевести файл в режим только добавления с помощью:
$ sudo chattr +a /var/log/syslog
Обратите внимание, что при копировании неизменяемого файла или файла только для добавления в другой файл эти атрибуты не будут сохранены во вновь созданном файле.
Обсуждение
Нет комментариев.