- Установка атрибутов файла linux
- ОПЦИИ
- АТРИБУТЫ
- АВТОР
- ОШИБКИ И ОГРАНИЧЕНИЯ
- 5 команд chattr, чтобы сделать важные файлы НЕИЗМЕНИМЫМИ (неизменяемыми) в Linux
- 1. Как добавить атрибуты к файлам для защиты от удаления
- 2. Как отключить атрибут в файлах
- 3. Как защитить файлы /etc/passwd и /etc/shadow
- 4. Добавить данные без изменения существующих данных в файле
- 5. Как защитить каталоги
Установка атрибутов файла 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).
Файл с установленным атрибутом `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.
В родных файловых системах Linux, т. е. ext2, ext3, ext4, btrfs и т. д., поддерживаются все флаги, хотя все флаги не будут поддерживаться для всех неродных ФС. Нельзя удалить или изменить файл/папку после того, как атрибуты установлены с помощью команды chattr, даже если у вас есть полные права доступа к ней.
Это очень полезно для установки атрибутов в системных файлах, таких как файлы passwd и shadow, в которых содержится информация о пользователе.
Синтаксис чата
# chattr [operator] [flags] [filename]
Атрибуты и флаги
Ниже приведен список общих атрибутов и связанных с ними флагов, которые можно установить/снять с помощью команды chattr.
- Если доступ к файлу осуществляется с установленным атрибутом A, его запись atime не обновляется.
- Если файл изменен с установленным атрибутом S, изменения синхронно обновляются на диске.
- Файл имеет атрибут a, его можно открыть только в режиме добавления для записи.
- Файл установлен с атрибутом ‘i’, не может быть изменен (неизменяемый). Означает, что нельзя переименовывать, создавать символические ссылки, выполнять, запрещать запись, только суперпользователь может отменить установку атрибута.
- Файл с атрибутом ‘j’ установлен, вся его информация обновляется в журнале ext3 перед обновлением в самом файле.
- Файл установлен с атрибутом t, без слияния хвостов.
- Файл с атрибутом ‘d’ больше не будет кандидатом на резервное копирование при запуске процесса создания дампа.
- Когда файл с атрибутом «u» удаляется, его данные сохраняются. Это позволяет пользователю запросить его восстановление.
Оператор
- + : добавляет атрибут к существующему атрибуту файлов.
- – : удаляет атрибут существующего атрибута файлов.
- = : сохранить существующие атрибуты файлов.
Здесь мы собираемся продемонстрировать некоторые примеры команд 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
Таким образом, вы можете установить неизменяемые разрешения для важных файлов или файлов конфигурации системы, чтобы предотвратить их удаление.
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, используйте справочные страницы.