Главная » 2017 » Ноябрь » 19 » man 2 ioctl_iflags
22:41
man 2 ioctl_iflags

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


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)):

FS_APPEND_FL 'a'
Файл можно открыть только с флагом O_APPEND (это ограничение не обойти даже
суперпользователю). Только привилегированный процесс (CAP_LINUX_IMMUTABLE)
может установить или сбросить этот атрибут.

FS_COMPR_FL 'c'
Хранить файл на диске в сжатом виде. Этот флаг не поддерживается
реализациями большинства основных файловых систем; исключением является
btrfs(5).

FS_DIRSYNC_FL 'D' (начиная с Linux 2.6.0)
Синхронно записывать изменения каталога на диск. Этот флаг предоставляет
эквивалент параметра MS_DIRSYNC вызова mount(2), но для каталога. Этот флаг
применим только для каталогов.

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

FS_JOURNAL_DATA_FL 'j'
Включение журналирования данных файла в файловых системах ext3(5) и
ext4(5). В файловой системе с журналиванием в режиме ordered или writeback
привилегированный (CAP_SYS_RESOURCE) процесс может установить этот флаг для
включения журналирования изменения данных пофайлово.

FS_NOATIME_FL 'A'
Не изменять время последнего доступа к файлу при доступе. Это может
увеличить произвольность ввода-вывода в приложениях, которым не нужна
точность этой метки времени. Данный флаг предоставляет функциональность
флага MS_NOATIME вызова mount(2), но пофайлово.

Этот флаг поддерживается только в Reiserfs. Он отключает свойство Reiserfs
упаковки хвостов, которая пытается упаковывать маленькие файлы (и конечные
фрагменты больших файлов) в в дисковые блоки метаданных файла.

FS_PROJINHERIT_FL 'P' (начиная с Linux 4.5)
Наследовать ID квоты проекта. Файлы и подкаталоги будут наследовать ID
проекта каталога. Этот флаг можно применять только для каталогов.

FS_SECRM_FL 's'
Помечать файл для безопасного удаления. Это свойство не реализовано во всех
файловых системах, так как задача безопасного стирания файла с хранящего
носителя на удивление сложна.

FS_SYNC_FL 'S'
Выполнять обновления файла синхронно. Для файлов, это приводит к выполнению
синхронной записи (как если бы все файлы открывались с флагом O_SYNC). Для
каталогов, это приводит к тому эффекту что и флаг FS_DIRSYNC_FL.

FS_TOPDIR_FL 'T'
Пометить каталог для специальной обработки по стратегии выделения блоков
Орлова. Подробности смотрите в chattr(1). Этот флаг можно применять только
к каталогам и он действует только в ext2, ext3 и ext4.

FS_UNRM_FL 'u'
Разрешить файлу быть не удалённым, если он удалён. Это свойство реализовано
во всех файловых системах, так как возможно реализовать механизм
восстановления файла вне ядра.

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



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


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



ЗАМЕЧАНИЯ


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



СМОТРИТЕ ТАКЖЕ


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



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 475 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar