SCROLL
Среднее время на прочтение: 1 мин.

Как сделать файл неизменяемым в 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

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

Обсуждение

0 комментариев

Нет комментариев.