Меню Рубрики

Команда chattr в linux

Как предотвратить модификацию файлов в Linux с помощью команды chattr

chattr (Change Attribute) — это утилита командной строки в linux, которая используется для установки/снятия специальных атрибутов файлов для предотвращения случайной модификации и удаления файлов или директорий, даже если вы авторизованы как root.

Нативные файловые системы в Linux, такие как ext2, ext3, ext4, btrfs, поддерживают все флаги для файлов. Никто не сможет удалить или модифицировать файл/директорию, защищенный атрибутами, установленными с помощью команды chattr, даже имея полный доступ ко всем операциям с файлом. Очень полезно защитить атрибутами такие файлы , как passwd и shadow, содержащие информацию о пользователе.

Атрибуты и флаги

Ниже приведен список часто используемых атрибутов и соответствующих флагов, которые согут быть установлены с помощью команды chattr.
1. Если обращаются к файлу с установленным атрибутом «А», его запись atime не обновляется.
2. Если модифицируется файл с установленным атрибутом «S», изменения синхронизируются с диском.
3. Если установлен атрибут «a», файл может быть открыт для записи только в режиме добавления текста.
4. Если установлен атрибут «i», файл нельзя модифицировать (immutable). Это значит нельзя переименовывать, создавать символьные ссылки, исполнять и записывать, снять этот втрибут может только суперпользователь.
5. Если установлен атрибут «j», то при модификации файла сначала будет обновлена информация о файле в журнале ext3, а затем уже сам файл.
6. Если установлен атрибут «t», файл нельзя объединять с другими файлами.
7. Файл с атрибутом «d» не будет являться кандидатом для резервного копирования при запуске процесса dump.
8. При удалении файла с атрибутом «u» его данные сохраняются, и пользователь сможет восстановить его.

Операторы

+ : добавляет атрибут к существующим у файла атрибутам.
— : удаляет атрибут файла.
= : оставляет существующие у файла атрибуты.

Теперь мы продемонстрируем вам несколько примеров применения команды chattr.

1. Как защитить файл от удаления

Для демонстрационных целей мы будем использовать директорию demo и файл important_file.conf. Сначала посмотрим, какие атрибуты у них установлены, с помощью команды ls -l. Как можно видеть ниже пока никаких атрибутов нет.

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

Замечание: Бит +i может быть установлен только суперпользователем, либо пользователем с привилегиями sudo.
Давайте проверим установленные атрибуты с помощью команды ‘lsattr’.

Теперь, попытавшись удалить, переименовать или изменить права доступа к файлу, вы увидите сообщение: «Operation not permitted».

2. Как снять атрибут с файла

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

Теперь снова проверим наличие атрибутов с помощью команды ‘lsattr’.

Флаг ‘-i’ удален, поэтому мы спокойно можем удалить файлы и директории.

3. Как защитить файлы /etc/passwd и /etc/shadow

Предотвратив модификацию файлов /etc/passwd или /etc/shadow, мы защитим их от случайного удаления или подмены, а также отключим создание пользовательских аккаунтов.

Теперь попробуем создать создать нового пользователя, и получаем сообщение об ошибке ‘cannot open /etc/passwd’.

Таким образом вы можете защитить важные файлы от удаления.

4. Добавление данных в файл без изменения уже существующих

Если вы хотите разрешить только добавление данных файл, без редактирования уже существующих данных, это можно сделать с помощью установки атрибута ‘a’:

Теперь файл можно открыть на запись только в режиме добавления данных. Попробовав заменить существующее содержимое файла example.txt, вы увидите сообщение об ошибке ‘Operation not permitted’:

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

5. Как защищать директории

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

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

Источник

chattr +i и chattr -i, запрет изменения файлов в Linux

Создадим от имени непривелегированного пользователя тестовый файл

На него установлены стандартные права, их не меняем

-rw-r—r— 1 admin admin 0 Mar 10 20:30 test.txt

В файл можно свободно добавлять любое содержимое, например цифру 1.

Теперь добавим блокировку. От имени пользователя root или через sudo

Права, владелец и группа владельца файла не изменились

-rw-r—r— 1 admin admin 2 Mar 10 20:31 test.txt

При этом вносить какие-либо коррективы сейчас нельзя. Также нельзя добавлять новое содержимое. Попытка сделать это завершится ошибкой.

bash: test.txt: Operation not permitted

Проверить статус можно так

Поскольку добавил блокировку суперпользователь — снять ее может только он. Для этого та же команда для файла выполняется с ключем -i. Возможность редактирования после этого появится.

chattr используют чтобы ограничить доступ к каким-либо важным файлам или возможностям системы. Блокировать так можно бинарные файлы php или sendmail, это сделает невозможным для пользователя без root доступа снять блокировку. Также chattr не так очевиден как простая смена прав.

Источник

Команда chattr в Linux

Предположим вы хотите защитить некоторые важные файлы в Linux. При чем они должны быть защищены не только от перезаписи но и от случайного или преднамеренного удаления и перемещения. Предотвратить перезапись или изменение битов доступа к файлов можно с помощью стандартных утилит chmod и chown, но это не идеальное решение, так как у суперпользователя по прежнему остается полный доступ. Но есть еще одно решение. Это команда chattr.

Эта утилита позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение). Для просмотра текущих аттрибутов можно использовать lsattr. Изначально атрибуты управляемые chattr и lsattr поддерживались только файловыми системами семейства ext (ext2,ext3,ext4). но теперь эта возможность доступна и в других популярных файловых системах таких как XFS, Btrfs, ReiserFS, и т д.

Синтаксис и опции chattr

Утилиты chattr и lsattr входят в пакет e2fsprogs и предустановлены во всех современных дистрибутивах. Базовый синтаксис chattr выглядит следующим образом:

$ chattr опции [оператор] [атрибуты] файлы

Вот основные опции утилиты, которые вы можете использовать:

  • -R — рекурсивная обработка каталога;
  • -V — максимально подробный вывод;
  • -f — игнорировать сообщения об ошибках;
  • -v — вывести версию.

Оператор может принимать значения:

  • + — включить выбранные атрибуты;
  • — отключить выбранные атрибуты;
  • = — оставить значение атрибута таким, каким оно было у файла.

Вот некоторые доступные атрибуты:

  • a — файл может быть открыт только в режиме добавления;
  • A — не обновлять время перезаписи;
  • c — автоматически сжимать при записи на диск;
  • C — отключить копирование при записи;
  • D — работает только для папки, когда установлен, все изменения синхронно записываются на диск сразу же;
  • e — использовать extent’ы блоков для хранения файла;
  • i — сделать неизменяемым;
  • j — все данные перед записью в файл будут записаны в журнал;
  • s — безопасное удаление с последующей перезаписью нулями;
  • S — синхронное обновление, изменения файлов с этим атрибутом будут сразу же записаны на диск;
  • t — файлы с этим атрибутом не будут хранится в отдельных блоках;
  • u — содержимое файлов с этим атрибутом не будет удалено при удалении самого файла и потом может быть восстановлено.

А теперь давайте перейдем к примерам работы с утилитой chattr и сделаем файл неизменяемым.

Примеры использования chattr

Давайте сначала посмотрим текущие атрибуты файла /etc/passwd:

Для того чтобы сделать файл неизменяемым вам надо установить атрибут i. Например, защитим от записи тот же файл /etc/passwd:

sudo chattr +i /etc/passwd

Заметьте, нужно иметь права суперпользователя для установки и удаления атрибутов. Теперь проверим установился ли атрибут:

Теперь файл неизменяемый, и ни один пользователь не сможет его изменить. И более того, даже суперпользователь не сможет модифицировать, перезаписать или удалить этот файл. Перед тем как что либо делать с этим файлом нужно отключить атрибут.

Для отключения любого из атрибутов chattr используйте оператор минус (-):

sudo chattr -i /etc/passwd

Если вы хотите сделать все файлы в каталоге неизменяемыми используйте опцию -R:

sudo chattr -R +i /etc/

Еще один полезный атрибут только добавлять (a), который позволяет только добавлять информацию в файл, без возможности перезаписи. Он может понадобится, например, если вы не хотите чтобы кто-либо мог очистить журнал. Он устанавливается аналогично атрибуту i:

sudo chattr +a /var/log/syslog

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

Выводы

В этой инструкции я показал как использовать команды управления дополнительными атрибутами файлов chattr и lsattr для защиты от случайной перезаписи или удаления. Не забывайте что вы не можете использовать chattr как меру безопасности так как атрибуты легко изменить. Один из способов решения этой проблемы — ограничить доступ к самой утилите chattr. Для получения более подробной информацию смотрите man страницу команды.

Источник

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

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

  • Команда cat в linux
  • Команда autoremove в linux
  • Количество слов в строке linux
  • Количество свободной памяти linux
  • Количество рабочих столов linux