ИМЯ
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.