- Linux.yaroslavl.ru
- Атрибуты Файлов
- Команда ls – просмотр атрибутов файлов
- Получение сведений о файлах и каталогах
- Как правильно интерпретировать вывод команды ls?
- Особенности использования команды ls
- Еще полезные примеры ls
- Заключение
- Команда Chattr в Linux (атрибуты файлов)
- chattr Синтаксис
- chattr Пример
- Выводы
- Команда chattr в Linux
- Синтаксис и опции chattr
- Примеры использования chattr
- Выводы
Linux.yaroslavl.ru
Атрибуты Файлов | ||
---|---|---|
Пред. | Глава 9. Файловая Система Linux | След. |
Атрибуты Файлов
В файловой системе FAT существуют атрибуты файла (arhive, system, hidden). Точно также, файловая система ext2fs тоже имеет атрибуты, правда эти атрибуты отличаются от атрибутов, принятых в FAT. Атрибуты в ext2fs используются очень редко, поэтому мы упоминаем о них только из соображений законченности повествования. Однако, если вас действительно интересует безопасность вашей системы, рекомендуем ознакомиться с этим разделом.
Существует две команды для управления атрибутами файла: lsattr(1) и chattr(1). Как вы наверное догадались, команда lsattr служит для просмотра атрибутов, ну а команда chattr служит для изменения атрибутов. Атрибуты могут быть установлены только для каталогов и обыкновенных файлов. Доступны следующие атрибуты:
A (no Access time): если для файла или каталога установлен такой атрибут, то, при обращении к этому файлу (для чтения или записи), у файла не будет модифицироваться время последнего обращения. Это может быть полезно, например, при работе с файлами и каталогами, к которым очень часто обращаются, открывая их для чтения. Это может несколько разгрузить систему, так как время последнего доступа — это единственный параметр в inode, который изменяется при открытии файла в режиме read-only (только для чтения).
a ( append only): если для файла или каталога установлен такой атрибут, а также этот файл (каталог) допускает запись, то единственная доступная операция записи — это добавление в конец файла (append). В случае каталога это означает, что вы можете только добавлять файлы, но не можете переименовывать или удалять любой существующий файл внутри этого каталога. Только root может устанавливать или очищать этот атрибут.
d (no dump): dump (8) это стандартная для UNIX утилита резервного копирования. Она создает резервную копию любой файловой системы, у которой в файле /etc/fstab значение dump counter установлено в 1 (подробнее смотрите Глава 8. Файловая Система и Точки Монтирования). Если файл или каталог имеет этот атрибут, то он будет игнорирован при создании резервной копии файловой системы. Обратите внимание, что в случае установки атрибута для каталога, под действие атрибута рекурсивно попадают все нижележащие файлы и каталоги.
i ( immutable): файл или каталог с таким атрибутом не может изменяться вообще: то есть, он не может быть переименован, на него не может быть создана ссылка. [20] Также такой файл не может быть удален. Только root может устанавливать или очищать этот атрибут. Обратите внимание, что этот атрибут также предотвращает изменения времени доступа, поэтому вы не должны совместно использовать атрибуты A и i.
s ( secure deletion): при удалении файла, помеченного таким атрибутом, место на диске, которое занимал файл, будет заполнено нулями.
S ( Synchronous mode): если установлен такой атрибут, то все изменения в файл будут записаны немедленно. Попросту говоря, этот атрибут снимает буферизацию записи для этого файла
Возможно имеет смысл установить атрибут 'i' на некоторые жизненно важные системные файлы, чтобы избежать “неожиданностей”. Также, можно проставить атрибут 'A', например, на файлах помощи (man pages): Это предотвратит лишние дисковые операции и даже слегка сэкономит батареи на портативных компьютерах.
[20] Убедитесь, что вы поняли что обозначает “добавить ссылку” на файл или каталог 🙂
Источник
Команда ls – просмотр атрибутов файлов
При взаимодействии с файловой системой (ФС) всегда приходится тесно работать с некоторой информацией, без которой системное администрирование (да и обычное использование системы) просто невозможно. Речь идёт об атрибутах файлов, а точнее об инструменте её получения — команде ls. Многие, даже опытные пользователи не придают ей особого значения — для большинства это просто команда «просмотра содержимого каталогов». Однако, команда ls обладает куда более широкими возможностями. Которые превозносят работу с ФС на качественно более высокий уровень. Поскольку она позволяет получать самые ценные сведения о ФС, что является ключом к пониманию того, как, собственно, функционирует вся система в целом. Если для кого-то это и может быть совсем неважно, но только не для администраторов UNIX/Linux.
Получение сведений о файлах и каталогах
Файловая система для каждого из своих базовых объектов (файлов и каталогов) хранит около четырёх десятков информационных полей. Подавляющее большинство из этих полей ФС использует для поддержания собственной работоспособности. По сути, когда пользователь работает с ФС, он просто использует любезно предоставленные самой же ФС возможности и информацию. При этом видит всё «как на ладони», всё как есть. Единственным скрытым (а точнее, «замаскированным») компонентом в представлении ФС является оборудование. Которое представлено теми же самыми файлами с соответствующими им свойствами и атрибутами.
Что представляет собой тот или иной файл, т. е. какой доступ к нему предоставлен, какими «связями» он обладает, когда был создан и/или изменён. А также многое другое, позволяет узнать команда ls с ключом -l. Когда нужно «навести справки» о каком-либо объекте ФС, использовать нужно именно её:
Нет необходимости подробно останавливаться на синтаксисе и перечисления всех доступных опций и их описании. Поскольку это простая справочная информация, доступная из соответствующего справочного руководства: man ls. А вот сам вывод команды из приведённого примера стоит рассмотреть более внимательно. Он разбит на секции, каждая из которых является отдельным атрибутом файла. В данном выводе в первой секции представлен режим доступа к файлу. Во второй — количество жёстких ссылок на данный файл. В третьей и четвертой — информация о владельце и группе. В данном случае root, к которым принадлежит файл. Следующая секция отображает размер файла в байтах. Далее следует дата последнего изменения файла — 28 апреля 2017 г., последняя секция — имя самого файла. Что касается каталогов, то для них всегда имеется как минимум две жесткие ссылки: первая — из родительского каталога, а вторая — это «псевдокаталог» «.» внутри самого этого каталога.
Как правильно интерпретировать вывод команды ls?
Первое, что может ввести в заблуждение при изучении вывода команды ls -l, так это первая секция данных. Состоящая из набора десяти символов и показывающая режимы доступа к файлу. Для вышеприведённого примера первый символ «-» указывает, что это файл. А в случае с каталогом вместо него выводится символ «d». Следующие девять символов представляют собой три группы, отражающих режимы доступа к файлу. Первая группа (первые три символа «rwx») показывают, какие права доступа выставлены на данный файл для его владельца. Следующая группа символов — «r-x» — показывает режим доступа для группы, к которой принадлежит файл. Ну а третья («r-x») — права доступа для всех остальных пользователей.
В полях, отображающих владельца и группу вместо символьных имён могут быть также и цифровые идентификаторы. Такое бывает, когда соответствующие записи были удалены из файлов /etc/passwd или /etc/group. Также это может быть признаком возникновения ошибки в базах данных LDAP или NIS. Конечно, если таковые используются.
Следует также понимать, что время последнего изменения файла на самом деле отражает не время редактирования его содержимого, например, а время изменения одного или нескольких из его атрибутов.
Особенности использования команды ls
Когда команда ls обрабатывает не «обычные» файлы, а специальные файлы устройств (хотя это тоже самые обычные файлы). То для них она выводит несколько иную информацию:
Вместо размера файла выводится старший и младший номера (4, 0) устройства tty0 – это первая виртуальная консоль, управляемая драйвером устройства 4, который является драйвером терминала.
Когда нужно узнать для определённого файла не только количество указывающих на него жестких ссылок, но и сами эти ссылки. То целесообразно использовать опцию -i, которая выводит номер индексного дескриптора для файла:
Номер индексного дескриптора — это индекс той самой таблицы, в которой содержатся записи всех файловых систем. В свою очередь, на дескрипторы ссылаются файловые записи каталогов. Таким образом, у жёстких ссылок, ссылающихся на один и тот же файл, будут одинаковые номера. Зная номер индексного дескриптора определённого файла, можно найти в системе все ссылающиеся на него жесткие ссылки, используя команду find:
Данный пример — лишь одно из важных практических применений команды ls. Следует также отметить некоторые особенно полезные опции команды ls:
-a – отображает все файлы и каталоги. Включая скрытые (имена которых начинаются с точки), а также «всевдокаталоги» с именами «.» и «. .»;
-t – отображает результаты в отсортированном (по времени изменения файлов) порядке. А опция -tr то же, но в обратном порядке;
-F – выделяет каталоги и исполняемые файлы в общем выводе;
-h – отображает размеры файлов и каталогов в «человекопонятных» единицах, к примеру 4k или 10M;
-R – рекурсивный вывод, выполнение которого прерывается нажатием сочетания клавиш .
Иногда возникает путаница в использовании опций -l и —d. Дело в том, что опция -d предназначена для дополнения работы опции -l (которая выводит подробную информацию об атрибутах). Когда необходимо получить атрибуты именно конкретного каталога:
Еще полезные примеры ls
Вывод файлов по дате изменения, вверху будут самые новые файлы
Вывод файлов по дате изменения, вверху будут самые старые файлы
Отсортировать файлы по размеру
Вывести список только каталогов:
Заключение
В заключении нужно отметить, что несмотря на кажущуюся незатейливость команды ls, она является базовым инструментом системного администратора для «исследования» паутины ФС. И если можно так выразиться, средством для понимания её скрытого порядка и принципов работы.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Команда Chattr в Linux (атрибуты файлов)
В Linux атрибуты файла — это свойства метаданных, которые описывают поведение файла. Например, атрибут может указывать, сжат ли файл, или указывать, можно ли удалить файл.
Некоторые атрибуты, такие как неизменяемость, могут быть установлены или очищены, в то время как другие, такие как шифрование, доступны только для чтения и могут быть только просмотрены. Поддержка определенных атрибутов зависит от используемой файловой системы.
В этой статье объясняется, как использовать команду chattr для изменения атрибутов файлов в файловых системах Linux.
chattr Синтаксис
Команда chattr имеет следующую общую форму:
Значение части [OPERATOR] может быть одним из следующих символов:
- + — Оператор «плюс» сообщает chattr о необходимости добавления указанных атрибутов к существующим.
- — — Оператор минус указывает chattr удалить указанные атрибуты из существующих.
- = — Оператор равенства сообщает chattr о необходимости установить указанные атрибуты как единственные.
За оператором следует один или несколько флагов [ATTRIBUTES] которые вы хотите добавить или удалить из атрибутов файла. Ниже приведен список нескольких общих атрибутов и связанных флагов:
- a — если этот атрибут установлен, файл можно открыть только в режиме добавления для записи.
- A — Когда файл с этим установленным атрибутом открыт, его временная запись не изменяется. atime (время доступа) — это время последнего доступа / открытия файла какой-либо командой или приложением.
- e — этот атрибут означает, что файл использует экстенты для сопоставления блоков на диске. Атрибут e нельзя изменить с помощью chattr .
- i — этот атрибут указывает, что файл неизменяемый, что означает, что файл нельзя удалить или переименовать.
Чтобы получить полный список всех атрибутов и флагов файлов, введите в терминале man chattr .
По умолчанию атрибуты файла не сохраняются при копировании файла с помощью таких команд, как cp или rsync .
chattr Пример
Одно из распространенных применений chattr — установка флага неизменяемости для файла или каталога, чтобы пользователи не могли удалить или переименовать файл.
Вы можете просмотреть атрибуты файла с помощью команды lsattr :
Вывод ниже показывает, что установлен только флаг e :
Чтобы сделать файл неизменяемым, добавьте флаг i с оператором + к существующим атрибутам:
Мы используем sudo, потому что только root может изменить неизменяемый флаг.
Подтвердите, что атрибут добавлен:
Чтобы отменить изменения и удалить неизменяемый флаг, используйте оператор — :
С помощью chattr вы можете добавлять или удалять сразу несколько атрибутов. Например, чтобы сделать файл неизменяемым и указать ядру не отслеживать время последнего доступа, вы должны использовать:
Последний оператор, который вы можете использовать, — это оператор = . Например, чтобы установить атрибут e как единственный атрибут, вы должны запустить:
Обратите внимание, что оператор и флаг заключены в кавычки, чтобы избежать интерпретации оболочки символа + .
Выводы
chattr — это инструмент командной строки для изменения атрибутов файлов в файловой системе Linux.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Команда 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 страницу команды.
Источник