Флаги файлов Linux

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

Так, файловые системы ext2/ext3/ext4 управляются специальными атрибутами-флагами, например a (append only), i (immutable), s (secure deletion), S (synchronous updates) и np.

Флаг s заставляет файловую систему при удалении файла не только высвобождать принадлежащие ему блоки, но и обнулять их, а флаг S заставляет операции записи в файл выполняться синхронно (немедленно), минуя отложенную запись с использованием дискового кэша.

Флаг i делает файл «неприкасаемым» — его нельзя ни изменить, ни удалить никому, даже суперпользователю root. Флаг а делает файл «накопительным», т. е. никому не дает изменять имеющуюся в файле информацию или удалять файл, а позволяет только добавлять данные в его конец.

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

Для просмотра флагов файлов предназначена утилита lsattr, а для их изменения — утилита chattr, что иллюстрирует листинг ниже на примере флага i.

Листинг флаги файлов

john@ubuntu:/srv/klngdom/stash$ lsattr

—————e-   ./README.mike
—————e-   ./README

john@ubuntu:/srv/kingdom/stash$ chattr +i README.mike

chattr: Операция не позволяется while setting flags on README.mike

john@ubuntu:/srv/kingdom/stash$ sudo chattr +1 README.mike

john@ubuntu:/srv/klngdom/stash$ lsattr README.mike

—-i———e- README.mike
john@ubuntu: /srv/kingdom/stash$ date > README.mike

-bash: README.mike: Операция не позволяется

john@ubuntu:/srv/klngdom/stash$ rm README. mike

rm: невозможно удалить «README.mike»: Операция не позволяется

john@ubuntu: /srv/klngdom/stash$ sudo rm README.mike

rm: невозможно удалить «README.mike»: Операция не позволяется!

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

Специальные файлы устройств, именованные каналы и сокеты имеют файловую при

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

Подсистема управления процессами, в которой пойдет речь в следующей статье, тоже не обходится без файлов и использует механизм их отображения в память для организации виртуальной памяти и средств межпроцессного взаимодействия, таких как разделяемая память, очереди сообщений (в реализации POSIX, но, к сожалению, не в реализации SYSV) и семафоры. Даже сетевые сокеты, рассмотрение которых отложено до главы 6, тоже на поверку оказываются файлами.

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

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