.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2017 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH inode 7 "30 июля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ inode \- описание файловой иноды .SH ОПИСАНИЕ Для каждого файла существует инода (inode), содержащая метаданные файла. Приложение может получить эти метаданные с помощью \fBstat\fP(2) (и подобных вызовов), который возвращает структуру \fIstat\fP, и \fBstatx\fP(2), который возвращает структуру \fIstatx\fP. .PP В следующем списке показана информация, которую, обычно, можно найти или которая относится к файловой иноде в полях соответствующей структуры, возвращаемой \fBstat\fP(2) и \fBstatx\fP(2): .TP Устройство, на котором находится инода \fIstat.st_dev\fP; \fIstatx.stx_dev_minor\fP и \fIstatx.stx_dev_major\fP .IP Каждая инода (а также связанный с ней файл) располагается в файловой системе, которая находится на устройстве. Это устройство опознаётся по комбинации своих основного (определяет общий класс устройства) и вспомогательного (определяет конкретный экземпляр в общем классе) идентификаторов. .TP Номер иноды \fIstat.st_ino\fP; \fIstatx.stx_ino\fP .IP Каждый файл в файловой системе имеет уникальный номер иноды. Для номеров инод гарантируется уникальность только внутри файловой системы (т. е., одинаковые номера инод могут использоваться в разных файловых системах, из\-за чего жёсткие ссылки не могут пересекать границы файловой системы). В этом поле содержится номер иноды файла. .TP Тип файла и режим \fIstat.st_mode\fP; \fIstatx.stx_mode\fP .IP Описание типа файла и режим приведены ниже. .TP Счётчик ссылок \fIstat.st_nlink\fP; \fIstatx.stx_nlink\fP .IP Это поле содержит количество жёстких ссылок на файл. Дополнительные ссылки на существующий файл созданы с помощью \fBlink\fP(2). .TP Пользовательский идентификатор \fIst_uid\fP \fIstat.st_uid\fP; \fIstatx.stx_uid\fP .IP В этом поле содержится идентификатор пользователя, которому принадлежит файл. При создании файла идентификатору пользователя файла присваивается идентификатор эффективного пользователя создающего процесса. Идентификатор пользователя файла можно изменить с помощью \fBchown\fP(2). .TP Идентификатор группы \fIstat.st_gid\fP; \fIstatx.stx_gid\fP .IP В этом поле содержится идентификатор группы, которой принадлежит файл. При создании файла идентификатору группы файла присваивается идентификатор группы родительского каталога или идентификатор эффективной группы создающего процесса, в зависимости от наличия бита set\-group\-ID на родительском каталоге (смотрите ниже). Идентификатор группы файла можно изменить с помощью \fBchown\fP(2). .TP Устройство, представляемое этой инодой \fIstat.st_rdev\fP; \fIstatx.stx_rdev_minor\fP и \fIstatx.stx_rdev_major\fP .IP Если этот файл (инода) представляет устройство, то инода хранит основной и вспомогательный идентификатор этого устройства. .TP Размер файла \fIstat.st_size\fP; \fIstatx.stx_size\fP .IP Размер файла (если он обычный или является символьной ссылкой) в байтах. Размер символьной ссылки равен длине пути файла, на который она ссылается, без конечного нулевого байта. .TP Предпочтительный размер блока для ввода/вывода \fIstat.st_blksize\fP; \fIstatx.stx_blksize\fP .IP «Предпочтительный» размер блока для эффективного ввода/вывода в файловой системе (запись в файл более мелкими порциями может привести к неэффективному чтению/изменению/повторной записи). .TP Количество блоков, выделенных файлу \fIstat.st_blocks\fP; \fIstatx.stx_size\fP .IP Количество блоков (по 512 байт), выделенных для файла (может быть меньше, чем \fIst_size\fP/512, когда в файле есть пропуски (holes)). .IP .\" Rationale for sys/stat.h in POSIX.1-2008 В стандарте POSIX.1 отмечено, что размер единиц значения \fIst_blocks\fP структуры \fIstat\fP стандартом не определяется. Во многих реализациях он равен 512 байт; в некоторых системах используются другой — 1024. Кроме этого, размер единиц может отличаться для разных файловых систем. .TP Метка времени последнего доступа (atime) \fIstat.st_atime\fP; \fIstatx.stx_atime\fP .IP Метка времени последнего доступ к файлу. Изменяется при доступе к файлу, например, при выполнении \fBexecve\fP(2), \fBmknod\fP(2), \fBpipe\fP(2), \fButime\fP(2) и \fBread\fP(2) (при чтении ненулевого количества байт). Другие интерфейсы, например \fBmmap\fP(2), могут изменять метку, но могут и не делать этого. .IP Некоторые типы файловых систем позволяют выполнить монтирование таким образом, что факт доступа к файлу или каталогу не вызовет изменение метки atime (смотрите описание \fInoatime\fP, \fInodiratime\fP и \fIrelatime\fP в \fBmount\fP(8) и связанную с ними информацию в \fBmount\fP(2)). Также, поле метка atime не обновляется, если файл открыт с флагом \fBO_NOATIME\fP; смотрите \fBopen\fP(2). .TP Метка времени создания файла (btime) (не возвращается в структуре \fIstat\fP); \fIstatx.stx_btime\fP .IP Метка времени создания файла. Устанавливается при создании файла и после этого не изменяется. .IP .\" FIXME Is it supported on ext4 and XFS? Метка btime отсутствовала в системах UNIX и в настоящее время не поддерживается в большинстве файловых систем Linux. .TP Метка времени последнего изменения (mtime) \fIstat.st_mtime\fP; \fIstatx.stx_mtime\fP .IP Метка времени последнего изменения файла. Изменяется при изменении файла, например, при выполнении \fBmknod\fP(2), \fBtruncate\fP(2), \fButime\fP(2) и \fBwrite\fP(2) (если записано не менее одного байта). Кроме того, у каталога метка mtime изменяется при создании и удалении файлов в этом каталоге. Метка mtime \fIне изменяется\fP при изменении владельца, группы, количества жёстких ссылок или режима доступа. .TP Метка времени последнего изменения состояния (ctime) \fIstat.st_ctime\fP; \fIstatx.stx_ctime\fP .IP Метка времени последнего изменения состояния файла. Изменяется при записи или установке информации иноды (т. е., владельце, группе, количестве ссылок, режиме и т. д.). .PP The timestamp fields report time measured with a zero point at the \fIEpoch\fP, 1970\-01\-01 00:00:00 +0000, UTC (see \fBtime\fP(7)). .PP .\" commit ef7f38359ea8b3e9c7f2cae9a4d4935f55ca9e80 .\" Метки времени наносекундной точности поддерживаются в XFS, JFS, Btrfs и ext4 (начиная с Linux 2.6.23). Метки времени наносекундной точности не поддерживаются в ext2, ext3 и Reiserfs. Для возвращать метки времени наносекундной точности поля меток времени в структурах \fIstat\fP и \fIstatx\fP определены как структуры, включающие наносекундную составляющую. Подробности приведены в \fBstat\fP(2) и \fBstatx\fP(2). Для файловых систем, не поддерживающих субсекундные метки времени, наносекундные поля в возвращаемых структурах \fIstat\fP и \fIstatx\fP имеют значение 0. .SS "Тип файла и режим" Поле \fIstat.st_mode\fP (в \fBstatx\fP(2) — поле \fIstatx.stx_mode\fP ) содержит тип файл и режим. .PP В POSIX относятся к битам \fIstat.st_mode\fP равным маске \fBS_IFMT\fP (смотрите ниже) как к \fIтипу файла\fP (file type), 12 битам, соответствующим маске 07777, как к \fIбитам режима файла\fP (file mode bits) и наименее значащим 9 битам (0777) как к \fIбитам доступа к файлу\fP (file permission bits). .PP Следующие значения масок определены для типа файла: .in +4n .TS lB l l. 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 .TE .in .PP Таким образом, чтобы проверить обычный файл (например) на возможность записи: .PP .in +4n .EX stat(pathname, &sb); if ((sb.st_mode & S_IFMT) == S_IFREG) { /* обработка обычного файла */ } .EE .in .PP Так как приведённое выше тестирование имеет общий вид, в POSIX определены дополнительные макросы, которые позволяют тестировать тип файла в \fIst_mode\fP более краткой записью: .RS 4 .TP 1.2i \fBS_ISREG\fP(m) обычный файл? .TP \fBS_ISDIR\fP(m) каталог? .TP \fBS_ISCHR\fP(m) символьное устройство? .TP \fBS_ISBLK\fP(m) блочное устройство? .TP \fBS_ISFIFO\fP(m) FIFO (именованный канал)? .TP \fBS_ISLNK\fP(m) символьная ссылка? (нет в POSIX.1\-1996.) .TP \fBS_ISSOCK\fP(m) сокет? (нет в POSIX.1\-1996.) .RE .PP The preceding code snippet could thus be rewritten as: .PP .in +4n .EX stat(pathname, &sb); if (S_ISREG(sb.st_mode)) { /* обработка обычного файла */ } .EE .in .PP Определений большинства показанных ранее макросов тестирования типа файла доступно, если определён любой из следующих макросов тестирования свойств: \fB_BSD_SOURCE\fP (в glibc 2.19 и старее), \fB_SVID_SOURCE\fP (в glibc 2.19 и старее) или \fB_DEFAULT_SOURCE\fP (в glibc 2.20 и новее). Также, определение всех макросов, за исключением \fBS_IFSOCK\fP и \fBS_ISSOCK\fP(), доступны при наличии \fB_XOPEN_SOURCE\fP. .PP Определение \fBS_IFSOCK\fP также можно получить определив \fB_XOPEN_SOURCE\fP со значением 500 или более или (начиная с glibc 2.24) определением \fB_XOPEN_SOURCE\fP и \fB_XOPEN_SOURCE_EXTENDED\fP одновременно. .PP Определение \fBS_ISSOCK\fP() доступно, если определён любой из следующих макросов тестирования свойств: \fB_BSD_SOURCE\fP (в glibc 2.19 и старее), \fB_DEFAULT_SOURCE\fP (в glibc 2.20 и новее), \fB_XOPEN_SOURCE\fP со значением 500 или более или \fB_POSIX_C_SOURCE\fP со значением 200112L или более или (начиная с glibc 2.24) \fB_XOPEN_SOURCE\fP и \fB_XOPEN_SOURCE_EXTENDED\fP одновременно. .PP Следующие значения масок определены для компонента режима доступа к файлу в поле \fIst_mode\fP: .in +4n .TS lB l lx. S_ISUID 04000 T{ бит set\-user\-ID (смотрите \fBexecve\fP(2)) T} S_ISGID 02000 T{ бит set\-group\-ID (смотрите далее) T} S_ISVTX 01000 T{ закрепляющий бит (смотрите далее) T} S_IRWXU 00700 T{ владелец имеет права на чтение, запись и выполнение T} S_IRUSR 00400 T{ владелец имеет право на чтение T} S_IWUSR 00200 T{ владелец имеет право на запись T} S_IXUSR 00100 T{ владелец имеет право на выполнение T} S_IRWXG 00070 T{ группа имеет права на чтение, запись и выполнение T} S_IRGRP 00040 T{ имеет право на чтение T} S_IWGRP 00020 T{ группа имеет право на запись T} S_IXGRP 00010 T{ группа имеет право на выполнение T} S_IRWXO 00007 T{ все остальные (вне группы) имеют права на чтение, запись и выполнение T} S_IROTH 00004 T{ все остальные имеют право на чтение T} S_IWOTH 00002 T{ все остальные имеют право на запись T} S_IXOTH 00001 T{ все остальные имеют право на выполнение T} .TE .in .PP Бит set\-group\-ID (\fBS_ISGID\fP) имеет несколько специальных применений. Для каталога он указывает, что используется семантика BSD: файлы, создаваемые в каталоге, наследуют ID группы этого каталога, а не фактический ID группы создающего процесса, а для подкаталогов данного каталога также будет установлен бит \fBS_ISGID\fP. Для исполняемого файла бит set\-group\-ID заставляет изменить фактический ID группы процесса, который выполняет файл, согласно правилам, описанным в \fBexecve\fP(2). Если файл не имеет бита выполнения группой (\fBS_IXGRP\fP), то бит set\-group\-ID означает обязательную (mandatory) блокировку файла/записей. .PP Закрепляющий (sticky) бит (\fBS_ISVTX\fP) на каталоге означает, что файлы в этом каталоге могут быть удалены или переименованы только владельцем файла, владельцем каталога и привилегированным процессом. .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .PP POSIX.1\-1990 did not describe the \fBS_IFMT\fP, \fBS_IFSOCK\fP, \fBS_IFLNK\fP, \fBS_IFREG\fP, \fBS_IFBLK\fP, \fBS_IFDIR\fP, \fBS_IFCHR\fP, \fBS_IFIFO\fP, and \fBS_ISVTX\fP constants, but instead specified the use of the macros \fBS_ISDIR\fP() and so on. .PP The \fBS_ISLNK\fP() and \fBS_ISSOCK\fP() macros were not in POSIX.1\-1996; the former is from SVID 4, the latter from SUSv2. .PP UNIX\ V7 (and later systems) had \fBS_IREAD\fP, \fBS_IWRITE\fP, \fBS_IEXEC\fP, and where POSIX prescribes the synonyms \fBS_IRUSR\fP, \fBS_IWUSR\fP, and \fBS_IXUSR\fP. .SH ЗАМЕЧАНИЯ For pseudofiles that are autogenerated by the kernel, the file size (\fIstat.st_size\fP; \fIstatx.stx_size\fP) reported by the kernel is not accurate. For example, the value 0 is returned for many files under the \fI/proc\fP directory, while various files under \fI/sys\fP 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 \[aq]\e0\[aq] to the returned buffer if it is to be interpreted as a string). .SH "СМ. ТАКЖЕ" \fBstat\fP(1), \fBstat\fP(2), \fBstatx\fP(2), \fBsymlink\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitriy S. Seregin , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .