Provided by: manpages-ru_4.19.0-7_all bug

ИМЯ

       inode - описание файловой иноды

ОПИСАНИЕ

       Для  каждого файла существует инода (inode), содержащая метаданные файла. Приложение может
       получить эти метаданные  с  помощью  stat(2)  (и  подобных  вызовов),  который  возвращает
       структуру stat, и statx(2), который возвращает структуру statx.

       В следующем списке показана информация, которую, обычно, можно найти или которая относится
       к файловой иноде в полях соответствующей структуры, возвращаемой stat(2) и statx(2):

       Устройство, на котором находится инода
              stat.st_dev; statx.stx_dev_minor и statx.stx_dev_major

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

       Номер иноды
              stat.st_ino; statx.stx_ino

              Каждый  файл  в  файловой  системе  имеет  уникальный номер иноды. Для номеров инод
              гарантируется уникальность только внутри файловой системы (т. е., одинаковые номера
              инод  могут использоваться в разных файловых системах, из-за чего жёсткие ссылки не
              могут пересекать границы файловой системы). В  этом  поле  содержится  номер  иноды
              файла.

       Тип файла и режим
              stat.st_mode; statx.stx_mode

              Описание типа файла и режим приведены ниже.

       Счётчик ссылок
              stat.st_nlink; statx.stx_nlink

              Это  поле  содержит  количество  жёстких  ссылок  на файл. Дополнительные ссылки на
              существующий файл созданы с помощью link(2).

       Пользовательский идентификатор
              st_uid stat.st_uid; statx.stx_uid

              В этом поле содержится идентификатор пользователя, которому принадлежит  файл.  При
              создании   файла  идентификатору  пользователя  файла  присваивается  идентификатор
              эффективного пользователя создающего  процесса.  Идентификатор  пользователя  файла
              можно изменить с помощью chown(2).

       Идентификатор группы
              stat.st_gid; statx.stx_gid

              В этом поле содержится идентификатор группы, которой принадлежит файл. При создании
              файла идентификатору группы файла присваивается идентификатор группы  родительского
              каталога  или   идентификатор эффективной группы создающего процесса, в зависимости
              от  наличия  бита  set-group-ID   на   родительском   каталоге   (смотрите   ниже).
              Идентификатор группы файла можно изменить с помощью chown(2).

       Устройство, представляемое этой инодой
              stat.st_rdev; statx.stx_rdev_minor и statx.stx_rdev_major

              Если  этот  файл  (инода)  представляет  устройство,  то  инода  хранит  основной и
              вспомогательный идентификатор этого устройства.

       Размер файла
              stat.st_size; statx.stx_size

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

       Предпочтительный размер блока для ввода/вывода
              stat.st_blksize; statx.stx_blksize

              «Предпочтительный» размер блока для эффективного ввода/вывода  в  файловой  системе
              (запись   в   файл   более   мелкими   порциями  может  привести  к  неэффективному
              чтению/изменению/повторной записи).

       Количество блоков, выделенных файлу
              stat.st_blocks; statx.stx_size

              Количество блоков (по 512 байт), выделенных  для  файла  (может  быть  меньше,  чем
              st_size/512, когда в файле есть пропуски (holes)).

              В  стандарте  POSIX.1 отмечено, что размер единиц значения st_blocks структуры stat
              стандартом не определяется. Во многих реализациях он равен 512  байт;  в  некоторых
              системах  используются  другой  — 1024. Кроме этого, размер единиц может отличаться
              для разных файловых систем.

       Метка времени последнего доступа (atime)
              stat.st_atime; statx.stx_atime

              Метка времени последнего доступ к файлу. Изменяется при доступе к файлу,  например,
              при  выполнении  execve(2),  mknod(2),  pipe(2),  utime(2)  и  read(2)  (при чтении
              ненулевого количества байт). Другие интерфейсы, например  mmap(2),  могут  изменять
              метку, но могут и не делать этого.

              Некоторые  типы файловых систем позволяют выполнить монтирование таким образом, что
              факт доступа к файлу или  каталогу  не  вызовет  изменение  метки  atime  (смотрите
              описание  noatime, nodiratime и relatime в mount(8) и связанную с ними информацию в
              mount(2)). Также, поле метка atime  не  обновляется,  если  файл  открыт  с  флагом
              O_NOATIME; смотрите open(2).

       Метка времени создания файла (btime)
              (не возвращается в структуре stat); statx.stx_btime

              Метка  времени  создания файла. Устанавливается при создании файла и после этого не
              изменяется.

              Метка btime отсутствовала в системах UNIX и в настоящее время не  поддерживается  в
              большинстве файловых систем Linux.

       Метка времени последнего изменения (mtime)
              stat.st_mtime; statx.stx_mtime

              Метка времени последнего изменения файла. Изменяется при изменении файла, например,
              при выполнении mknod(2), truncate(2), utime(2) и write(2) (если записано  не  менее
              одного  байта).  Кроме  того,  у  каталога  метка  mtime  изменяется при создании и
              удалении файлов в этом каталоге. Метка mtime не изменяется при изменении владельца,
              группы, количества жёстких ссылок или режима доступа.

       Метка времени последнего изменения состояния (ctime)
              stat.st_ctime; statx.stx_ctime

              Метка  времени  последнего  изменения  состояния  файла.  Изменяется при записи или
              установке информации иноды (т. е., владельце, группе, количестве ссылок,  режиме  и
              т. д.).

       The  timestamp  fields  report  time  measured  with a zero point at the Epoch, 1970-01-01
       00:00:00 +0000, UTC (see time(7)).

       Метки времени наносекундной точности поддерживаются в XFS, JFS, Btrfs и  ext4  (начиная  с
       Linux  2.6.23).  Метки  времени  наносекундной  точности  не поддерживаются в ext2, ext3 и
       Reiserfs. Для возвращать  метки  времени  наносекундной  точности  поля  меток  времени  в
       структурах  stat  и statx определены как структуры, включающие наносекундную составляющую.
       Подробности приведены в  stat(2)  и  statx(2).  Для  файловых  систем,  не  поддерживающих
       субсекундные  метки  времени,  наносекундные  поля  в возвращаемых структурах stat и statx
       имеют значение 0.

   Тип файла и режим
       Поле stat.st_modestatx(2) — поле statx.stx_mode ) содержит тип файл и режим.

       В POSIX относятся к битам stat.st_mode равным маске S_IFMT  (смотрите  ниже)  как  к  типу
       файла  (file  type), 12 битам, соответствующим маске 07777, как к битам режима файла (file
       mode bits) и наименее значащим 9 битам (0777) как к битам доступа к файлу (file permission
       bits).

       Следующие значения масок определены для типа файла:

           S_IFMT     0170000   битовая маска битового поля для типа файла

           S_IFSOCK   0140000   socket
           S_IFLNK    0120000   символьная ссылка
           S_IFREG    0100000   обычный файл
           S_IFBLK    0060000   блочное устройство
           S_IFDIR    0040000   каталог
           S_IFCHR    0020000   символьное устройство
           S_IFIFO    0010000   FIFO

       Таким образом, чтобы проверить обычный файл (например) на возможность записи:

           stat(pathname, &sb);
           if ((sb.st_mode & S_IFMT) == S_IFREG) {
               /* обработка обычного файла */
           }

       Так  как  приведённое выше тестирование имеет общий вид, в POSIX определены дополнительные
       макросы, которые позволяют тестировать тип файла в st_mode более краткой записью:

           S_ISREG(m)  обычный файл?

           S_ISDIR(m)  каталог?

           S_ISCHR(m)  символьное устройство?

           S_ISBLK(m)  блочное устройство?

           S_ISFIFO(m) FIFO (именованный канал)?

           S_ISLNK(m)  символьная ссылка? (нет в POSIX.1-1996.)

           S_ISSOCK(m) сокет? (нет в POSIX.1-1996.)

       The preceding code snippet could thus be rewritten as:

           stat(pathname, &sb);
           if (S_ISREG(sb.st_mode)) {
               /* обработка обычного файла */
           }

       Определений большинства показанных ранее макросов тестирования типа файла  доступно,  если
       определён  любой  из  следующих макросов тестирования свойств: _BSD_SOURCE (в glibc 2.19 и
       старее), _SVID_SOURCE (в glibc 2.19 и старее) или _DEFAULT_SOURCE (в glibc 2.20 и  новее).
       Также,  определение  всех  макросов,  за  исключением  S_IFSOCK и S_ISSOCK(), доступны при
       наличии _XOPEN_SOURCE.

       Определение S_IFSOCK также можно получить определив _XOPEN_SOURCE  со  значением  500  или
       более  или  (начиная  с  glibc  2.24)  определением _XOPEN_SOURCE и _XOPEN_SOURCE_EXTENDED
       одновременно.

       Определение S_ISSOCK() доступно, если определён любой из следующих  макросов  тестирования
       свойств:  _BSD_SOURCE  (в  glibc  2.19  и старее), _DEFAULT_SOURCE (в glibc 2.20 и новее),
       _XOPEN_SOURCE со значением 500 или более или  _POSIX_C_SOURCE  со  значением  200112L  или
       более или (начиная с glibc 2.24) _XOPEN_SOURCE и _XOPEN_SOURCE_EXTENDED одновременно.

       Следующие значения масок определены для компонента режима доступа к файлу в поле st_mode:

           S_ISUID     04000   бит set-user-ID (смотрите execve(2))
           S_ISGID     02000   бит set-group-ID (смотрите далее)
           S_ISVTX     01000   закрепляющий бит (смотрите далее)

           S_IRWXU     00700   владелец имеет права на чтение, запись и выполнение
           S_IRUSR     00400   владелец имеет право на чтение
           S_IWUSR     00200   владелец имеет право на запись
           S_IXUSR     00100   владелец имеет право на выполнение

           S_IRWXG     00070   группа имеет права на чтение, запись и выполнение
           S_IRGRP     00040   имеет право на чтение
           S_IWGRP     00020   группа имеет право на запись
           S_IXGRP     00010   группа имеет право на выполнение

           S_IRWXO     00007   все остальные (вне группы) имеют права на чтение, запись и
                               выполнение
           S_IROTH     00004   все остальные имеют право на чтение
           S_IWOTH     00002   все остальные имеют право на запись
           S_IXOTH     00001   все остальные имеют право на выполнение

       Бит set-group-ID  (S_ISGID)  имеет  несколько  специальных  применений.  Для  каталога  он
       указывает,  что  используется  семантика  BSD: файлы, создаваемые в каталоге, наследуют ID
       группы этого каталога, а не фактический ID группы создающего процесса, а для  подкаталогов
       данного   каталога  также  будет  установлен  бит  S_ISGID.  Для  исполняемого  файла  бит
       set-group-ID заставляет изменить фактический ID группы процесса, который  выполняет  файл,
       согласно  правилам,  описанным  в  execve(2).  Если  файл не имеет бита выполнения группой
       (S_IXGRP), то бит set-group-ID означает обязательную (mandatory) блокировку файла/записей.

       Закрепляющий (sticky) бит (S_ISVTX) на каталоге означает, что файлы в этом каталоге  могут
       быть   удалены   или   переименованы   только  владельцем  файла,  владельцем  каталога  и
       привилегированным процессом.

СТАНДАРТЫ

       Если вам нужно получить определение  типа  blkcnt_t  или  blksize_t  из  <sys/stat.h>,  то
       определите _XOPEN_SOURCE со значением 500 или больше (до включения каких-либо заголовочных
       файлов).

       POSIX.1-1990 did not describe the S_IFMT, S_IFSOCK, S_IFLNK,  S_IFREG,  S_IFBLK,  S_IFDIR,
       S_IFCHR,  S_IFIFO,  and  S_ISVTX  constants,  but  instead specified the use of the macros
       S_ISDIR()  and so on.  The S_IF* constants are present in POSIX.1-2001 and later.

       Макросы S_ISLNK() и S_ISSOCK() не описаны в POSIX.1-1996, но есть в  POSIX.1-2001;  первый
       взят из SVID 4, последний из SUSv2.

       UNIX V7 (and later systems) had S_IREAD, S_IWRITE, S_IEXEC, and where POSIX prescribes the
       synonyms S_IRUSR, S_IWUSR, and S_IXUSR.

ЗАМЕЧАНИЯ

       For pseudofiles that are  autogenerated  by  the  kernel,  the  file  size  (stat.st_size;
       statx.stx_size)   reported  by  the  kernel  is not accurate.  For example, the value 0 is
       returned for many files under the /proc directory, while various files under /sys report a
       size  of  4096 bytes, even though the file content is smaller.  For such files, one should
       simply try to read as many bytes as possible (and append '\0' to the returned buffer if it
       is to be interpreted as a string).

СМ. ТАКЖЕ

       stat(1), stat(2), statx(2), symlink(7)

ПЕРЕВОД

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

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

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