Scroll to navigation

IOCTL_IFLAGS(2) Руководство программиста Linux IOCTL_IFLAGS(2)

ИМЯ

ioctl_iflags - операции ioctl() для флагов иноды

ОПИСАНИЕ

Различные файловые системы Linux поддерживают флаги иноды — атрибуты, которые изменяют смысл файлов и каталогов. Эти флаги можно запросить и изменить с помощью двух операций ioctl(2):


int attr;
fd = open("pathname", ...);
ioctl(fd, FS_IOC_GETFLAGS, &attr);  /* помещает текущие флаги

в 'attr' */ attr |= FS_NOATIME_FL; /* изменяет полученную битовую маску */ ioctl(fd, FS_IOC_SETFLAGS, &attr); /* обновляет флаги иноды,
на которую указывает 'fd' */

Команды оболочки lsattr(1) и chattr(1) предоставляют интерфейс к этим двум операциям, позволяя пользователю просматривать и изменять флаги иноды, связанной с файлом.

Поддерживаются следующие флаги (показаны вместе с соответствующей буквой, которой обозначается флаг в lsattr(1) и chattr(1)):

Файл можно открыть только с флагом O_APPEND (это ограничение не обойти даже суперпользователю). Только привилегированный процесс (CAP_LINUX_IMMUTABLE) может установить или сбросить этот атрибут.
Хранить файл на диске в сжатом виде. Этот флаг не поддерживается реализациями большинства основных файловых систем; исключением является btrfs(5).
Синхронно записывать изменения каталога на диск. Этот флаг предоставляет эквивалент параметра MS_DIRSYNC вызова mount(2), но для каталога. Этот флаг применим только для каталогов.
Файл постоянный (immutable): не допускает изменение содержимого и метаданных (прав, меток времени, владельцев, счётчика ссылок и т. п.) (это ограничение не обойти даже суперпользователю). Только привилегированный процесс (CAP_LINUX_IMMUTABLE) может установить или сбросить этот атрибут.
Включение журналирования данных файла в файловых системах ext3(5) и ext4(5). В файловой системе с журналиванием в режиме ordered или writeback привилегированный (CAP_SYS_RESOURCE) процесс может установить этот флаг для включения журналирования изменения данных пофайлово.
Не изменять время последнего доступа к файлу при доступе. Это может увеличить произвольность ввода-вывода в приложениях, которым не нужна точность этой метки времени. Данный флаг предоставляет функциональность флага MS_NOATIME вызова mount(2), но пофайлово.
Файл не будет подвергаться обновлениям копирования-при-записи. Этот флаг работает только в файловых системах с поддержкой копирования-при-записи, таких как Btrfs. Смотрите chattr(1) и btrfs(5).
Не включать этот файл в резервную копию, создаваемую dump(8).
Этот флаг поддерживается только в Reiserfs. Он отключает свойство Reiserfs упаковки хвостов, которая пытается упаковывать маленькие файлы (и конечные фрагменты больших файлов) в в дисковые блоки метаданных файла.
Наследовать ID квоты проекта. Файлы и подкаталоги будут наследовать ID проекта каталога. Этот флаг можно применять только для каталогов.
Помечать файл для безопасного удаления. Это свойство не реализовано во всех файловых системах, так как задача безопасного стирания файла с хранящего носителя на удивление сложна.
Выполнять обновления файла синхронно. Для файлов, это приводит к выполнению синхронной записи (как если бы все файлы открывались с флагом O_SYNC). Для каталогов, это приводит к тому эффекту что и флаг FS_DIRSYNC_FL.
Пометить каталог для специальной обработки по стратегии выделения блоков Орлова. Подробности смотрите в chattr(1). Этот флаг можно применять только к каталогам и он действует только в ext2, ext3 и ext4.
Разрешить файлу быть не удалённым, если он удалён. Это свойство реализовано во всех файловых системах, так как возможно реализовать механизм восстановления файла вне ядра.

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

СООТВЕТСТВИЕ СТАНДАРТАМ

Флаги иноды являются нестандартным расширением Linux.

ЗАМЕЧАНИЯ

Для изменения флагов иноды файла используется операция FS_IOC_SETFLAGS; эффективный идентификатор пользователя вызывающего должен совпадать с владельцем файла или вызывающий должен иметь мандат CAP_FOWNER.

The type of the argument given to the FS_IOC_GETFLAGS and FS_IOC_SETFLAGS operations is int *, notwithstanding the implication in the kernel source file include/uapi/linux/fs.h that the argument is long *.

СМ. ТАКЖЕ

chattr(1), lsattr(1), mount(2), btrfs(5), ext4(5), xfs(5), xattr(7), mount(8)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

19 ноября 2019 г. Linux