Установка атрибутов файла linux

Установка атрибутов файла linux

Команда управляет атрибутами файлов, формат которых задается в следующем символьном виде +-=[ASacDdIijsTtu].

Оператор `+’ добавляет выбранные атрибуты к уже существующим атрибутам файлов; оператор `-‘ удаляет их; оператор `=’ устанавливает только атрибуты, которые файлы имеют.

Новые атрибуты для файла выбираются из последовательности `acdijsuADST’: (a) — «только добавление записей», (c) — «сжатый», (d) — «недампируемый», (i) — «недосягаемый», (j) — «с журналированием данных» , (s) — «с гарантированным удалением», (t) — «без склеивания хвостов файлов», (u) — «не удаляемый», (A) — «не обновляемый по времени доступа», (D) — «с синхронизацией изменений директории», (S) — «синхронно обновляемый», (T) — «на вершине иерархии директорий».

Следует учитывать, что действие атрибутов команды chattr перекрывает полномочия пользователя, направленные на модификацию или удаление файлов. Это свойство часто используют в качестве дополнительной меры по усилению безопасности системы. Например, установка атрибута i («недосягаемый») для файла /etc/lilo.conf при помощи:
chattr +i /etc/lilo.conf предотвращает любые изменения (случайные и не только) в файле lilo.conf. Установленные командой chattr атрибуты невозможно увидеть с помощью команды ls. Для этого следует применять команду lsattr.

ОПЦИИ

-R Рекурсивно меняет атрибуты каталогов и их содержимого. Встречающиеся символические ссылки во время рекурсии игнорируются. -V Подробно информирует о происходящем и выводит версию программы. -v version Устанавливает версию или номер «сборки» файловой системы.

АТРИБУТЫ

Если для файла установлен атрибут ‘A’, тогда не происходит обновление (модификация) записи atime (время доступа к файлу). Это позволяет избежать дополнительных дисковых операций ввода/вывода для систем на портативных компьютерах.

Для файла с установленным атрибутом `a’ разрешено лишь добавлять записи. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE, может установить или очистить этот атрибут.

Информация файла с установленным атрибутом `c’ автоматически упаковывается (сжимается) на диске ядром операционной системы. Операция чтения информации из этого файла возвращает несжатые данные. Запись информации в такой файл сопровождается предварительной её упаковкой и, наконец, последующим сохранением на диск.

Когда модифицируется директория с установленным атрибутом `D’, внесенные изменения синхронно записываются на диск; это эквивалентно применению опции монтирования `dirsync’ к подмножеству файлов.

Для файла с установленным атрибутом `d’ не выполняется резервное копирование, когда запущена программа dump (8).

Атрибут ‘E’ используется экспериментальными заплатками сжатия для определения того, что сжатый файл имеет ошибку сжатия. Это состояние может быть установлено или сброшено с помощью chattr (1), а отображено lsattr (1).

Атрибут ‘I’ используется кодом для хеш-деревьев (htree), чтобы указать, что директория находится позади индексированных хешированных деревьев. Это состояние может быть установлено или сброшено с помощью chattr (1), а отображено lsattr (1).

Читайте также:  Group permission folder linux

Файл с установленным атрибутом `i’ становится полностью не модифицируемым (недосягаемым): он не может быть удален или переименован, никакие ссылки не могут быть созданы на этот файл и никакие данные не могут быть записаны в него. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE может установить или очистить такой атрибут

Для файла с установленным атрибутом `j’ все его данные прежде, чем быть записанными непосредственно в файл, сохраняются в журнал ext3. Правда, это происходит в том случае, если файловая система смонтирована с опциями «data=ordered» или «data=writeback». Когда файловая система смонтирована с опцией «data=journal» все данные файла уже журналируются и этот атрибут не имеет никакого эффекта. Только суперпользователь или процесс, обладающий возможностью CAP_SYS_RESOURCE, может установить или очистить этот атрибут.

При удалении файла с установленным атрибутом `s’ выполняется обнуление его блоков и запись их обратно на диск.

Модифицируя файл с атрибутом `S’, внесенные изменения синхронно записываются на диск; использование этого атрибута эквивалентно применению опции монтирования `sync’ к подмножеству расположенных файлов.

Директория с установленным атрибутом ‘T’ будет считаться, как расположенная на вершине иерархии директорий с целью использования метода распределения блоков по Orlov (который применяется в системах с Linux 2.5.46 или выше).

Файл с установленным атрибутом ‘t’ не будет иметь в конце (в блоке на диске) дописанных (склеенных с ним) частичных фрагментов (хвостов) других файлов (для тех файловых систем, которые поддерживают «склеивание хвостов» файлов). Это необходимо для программ типа LILO, которые непосредственно обращаются к файловой системе и не понимают «склеивание хвостов» файлов. Правда, здесь следует отметить, что файловые системы ext2 или ext3 не поддерживают для файлов «склеивание хвостов» (всё же, кроме некоторых весьма экспериментальных заплаток).

При удалении файла с атрибутом `u’, его содержимое сохраняется (остается не тронутым) на диске. Это позволяет пользователю в последующем восстановить такой файл.

Атрибут ‘X’ используется экспериментальными заплатками сжатия для определения того, что к необработанному содержанию сжатого файла можно получить непосредственный доступ. Это состояние может быть установлено или сброшено с помощью chattr (1), а отображено lsattr (1).

Атрибут ‘Z’ используется экспериментальными заплатками сжатия для определения того, что сжатый файл является необработанным. Это состояние может быть установлено или сброшено с помощью chattr (1), а отображено lsattr (1).

АВТОР

chattr написана Remy Card . В настоящее время она поддерживается Theodore Ts’o .

ОШИБКИ И ОГРАНИЧЕНИЯ

Атрибуты `c’, ‘s’ и `u’ пока не работают в файловых системах ext2 и ext3, хотя уже в текущей линейке ядер Linux они поддерживаются и их можно было бы использовать. Эти атрибуты могут быть реализованы в будущих версиях ext2 и ext3.

Опция `j’ полезна только для смонтированной файловой системы ext3.

Опция `D’ полезна только для ядра Linux 2.5.19 или выше.

Источник

5 команд chattr, чтобы сделать важные файлы НЕИЗМЕНИМЫМИ (неизменяемыми) в Linux

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

Читайте также:  Astra linux bluetooth наушники

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

Это очень полезно для установки атрибутов в системных файлах, таких как файлы passwd и shadow, в которых содержится информация о пользователе.

Синтаксис чата
# chattr [operator] [flags] [filename]
Атрибуты и флаги

Ниже приведен список общих атрибутов и связанных с ними флагов, которые можно установить/снять с помощью команды chattr.

  1. Если доступ к файлу осуществляется с установленным атрибутом A, его запись atime не обновляется.
  2. Если файл изменен с установленным атрибутом S, изменения синхронно обновляются на диске.
  3. Файл имеет атрибут a, его можно открыть только в режиме добавления для записи.
  4. Файл установлен с атрибутом ‘i’, не может быть изменен (неизменяемый). Означает, что нельзя переименовывать, создавать символические ссылки, выполнять, запрещать запись, только суперпользователь может отменить установку атрибута.
  5. Файл с атрибутом ‘j’ установлен, вся его информация обновляется в журнале ext3 перед обновлением в самом файле.
  6. Файл установлен с атрибутом t, без слияния хвостов.
  7. Файл с атрибутом ‘d’ больше не будет кандидатом на резервное копирование при запуске процесса создания дампа.
  8. Когда файл с атрибутом «u» удаляется, его данные сохраняются. Это позволяет пользователю запросить его восстановление.
Оператор
  1. + : добавляет атрибут к существующему атрибуту файлов.
  2. : удаляет атрибут существующего атрибута файлов.
  3. = : сохранить существующие атрибуты файлов.

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

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

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

[ tecmint]# ls -l total 0 drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo -rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf

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

[ tecmint]# chattr +i demo/ [ tecmint]# chattr +i important_file.conf

Примечание. Неизменяемый бит +i может быть установлен только пользователем с правами суперпользователя (т. е. root) или пользователем с привилегиями sudo. устанавливать.

После установки неизменяемого бита давайте проверим атрибут с помощью команды «lsattr».

[ tecmint]# lsattr ----i----------- ./demo ----i----------- ./important_file.conf

Теперь попытался принудительно удалить, переименовать или изменить разрешения, но это не разрешено, пишет «Операция не разрешена».

[ tecmint]# rm -rf demo/ rm: cannot remove âdemo/â: Operation not permitted
[ tecmint]# mv demo/ demo_alter mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[ tecmint]# chmod 755 important_file.conf chmod: changing permissions of âimportant_file.confâ: Operation not permitted

2. Как отключить атрибут в файлах

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

[ tecmint]# chattr -i demo/ important_file.conf

После сброса разрешений проверьте неизменность файлов с помощью команды «lsattr».

[ tecmint]# lsattr ---------------- ./demo ---------------- ./important_file.conf

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

[ tecmint]# rm -rf * [ tecmint]# ls -l total 0

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

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

[ tecmint]# chattr +i /etc/passwd [ tecmint]# chattr +i /etc/shadow

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

[ tecmint]# useradd tecmint useradd: cannot open /etc/passwd

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

Читайте также:  Linux copy all files to usb

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

Предположим, вы хотите разрешить всем просто добавлять данные в файл без изменения или модификации уже введенных данных, вы можете использовать атрибут «a» следующим образом.

[ tecmint]# chattr +a example.txt [ tecmint]# lsattr example.txt -----a---------- example.txt

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

[ tecmint]# chattr -a example.txt

Теперь попробуйте заменить уже существующий контент в файле example.txt, вы получите сообщение об ошибке «Операция не разрешена».

[ tecmint]# echo "replace contain on file." > example.txt -bash: example.txt: Operation not permitted

Теперь попробуйте добавить новый контент в существующий файл example.txt и проверьте его.

[ tecmint]# echo "replace contain on file." >> example.txt
[ tecmint]# cat example.txt Here is the example to test 'a' attribute mean append only. replace contain on file.

5. Как защитить каталоги

Чтобы защитить весь каталог и его файлы, мы используем переключатель «-R» (рекурсивно) с флагом «+i» вместе с полным путем к папке.

[ tecmint]# chattr -R +i myfolder

После установки рекурсивного атрибута попробуйте удалить папку и ее файлы.

[ tecmint]# rm -rf myfolder/ rm: cannot remove 'myfolder/': Operation not permitted

Чтобы отменить разрешение, мы используем тот же переключатель «-R» (рекурсивно) с флагом «-i» вместе с полным путем к папке.

[ tecmint]# chattr -R -i myfolder

Вот и все! Чтобы узнать больше об атрибутах, флагах и параметрах команды chattr, используйте справочные страницы.

Источник

Оцените статью
Adblock
detector