ioctl_iflags(2) | System Calls Manual | 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)):
- 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), но пофайлово.
- FS_NOCOW_FL 'C' (начиная с Linux 2.6.39)
- Файл не будет подвергаться обновлениям копирования-при-записи. Этот флаг работает только в файловых системах с поддержкой копирования-при-записи, таких как Btrfs. Смотрите chattr(1) и btrfs(5).
- FS_NODUMP_FL 'd'
- Не включать этот файл в резервную копию, создаваемую dump(8).
- FS_NOTAIL_FL 't'
- Этот флаг поддерживается только в 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.
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)
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан 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.
30 октября 2022 г. | Linux man-pages 6.02 |