Provided by: manpages-pl_4.23.1-1_all bug

NAZWA

       inode - informacja o i-węźle pliku

OPIS

       Każdy plik posiada i-węzeł z metadanymi o pliku. Aplikacja może pobrać te metadane za pomocą stat(2) (lub
       powiązanych wywołań), które zwraca strukturę stat albo za pomocą statx(2), które zwraca strukturę statx.

       Poniższa lista zawiera informacje zwykle dostępne w i-węźle pliku lub z nim powiązane, wraz z nazwami pól
       struktur zwracanych przez stat(2) i statx(2):

       Urządzenie, na którym występuje i-węzeł
              stat.st_dev; statx.stx_dev_minor i statx.stx_dev_major

              Każdy  i-węzeł  (oraz  powiązany  plik)  występuje  w  systemie plików umieszczonym na urządzeniu.
              Urządzenie jest identyfikowane przez zestaw: identyfikatora  głównego  (opisującego  ogólną  klasę
              urządzenia) oraz identyfikatora pobocznego (opisującego konkretne wystąpienie w klasie ogólnej).

       Numer i-węzła
              stat.st_ino; statx.stx_ino

              Każdy  plik w systemie plików posiada unikatowy numer i-węzła. Numery i-węzłów są jednak unikatowe
              tylko w zakresie danego systemu plików (tj. ten sam numer  i-węzła  może  być  używany  w  różnych
              systemach  plików,  co  stanowi  powód, dla którego dowiązania zwykłe nie mogą wykraczać poza swój
              system plików). To pole zawiera numer i-węzła pliku.

       Typ i tryb pliku
              stat.st_mode; statx.stx_mode

              Zob. opis typu i trybu pliku, poniżej.

       Liczba dowiązań
              stat.st_nlink; statx.stx_nlink

              Pole zawiera liczbę dowiązań zwykłych (twardych) do pliku. Dodatkowe  dowiązania  do  istniejącego
              pliku tworzy się za pomocą link(2).

       Identyfikator użytkownika
              stat.st_uid; statx.stx_uid

              Pole  zapisuje  identyfikator  użytkownika  właściciela pliku. W przypadku nowo tworzonych plików,
              identyfikatorem użytkownika w pliku będzie efektywny identyfikator użytkownika tworzącego procesu.
              Identyfikator użytkownika pliku można zmienić za pomocą chown(2).

       Identyfikator grupy
              stat.st_gid; statx.stx_gid

              I-węzeł zapisuje identyfikator grupy  właściciela  pliku.  W  przypadku  nowo  tworzonych  plików,
              identyfikator  grupy  pliku  jest  albo identyfikatorem grupy katalogu nadrzędnego albo efektywnym
              identyfikatorem grupy procesu tworzącego, w zależności od tego, czy bit ustawienia  grupy  podczas
              wykonania  (sgid)  jest  ustawiony  na katalogu nadrzędnym (zob. niżej). Identyfikator grupy pliku
              można zmienić za pomocą chown(2).

       Urządzenie reprezentowane przez ten i-węzeł
              stat.st_rdev; statx.stx_rdev_minor i statx.stx_rdev_major

              Jeśli  ten  plik  (i-węzeł)  reprezentuje  urządzenie,  to  i-węzeł  zapisuje  główny  i  poboczny
              identyfikator tego urządzenia.

       Rozmiar pliku
              stat.st_size; statx.stx_size

              To pole ujawnia rozmiar pliku (jeśli jest zwykłym plikiem lub dowiązaniem symbolicznym) w bajtach.
              Rozmiarem  dowiązania  symbolicznego jest długość ścieżki, którą zawiera dowiązanie, bez końcowego
              bajtu null.

       Preferowany rozmiar bloku do wejścia/wyjścia
              stat.st_blksize; statx.stx_blksize

              Pole ujawnia „preferowany” rozmiar bloku w celu uzyskania wydajnego wejścia/wyjścia systemu plików
              (zapis    do    pliku    w    mniejszych    fragmentach    spowoduje    nieefektywną     sekwencję
              odczyt-modyfikacja-nadpis).

       Liczba bloków przypisanych do pliku
              stat.st_blocks; statx.stx_blocks

              Pole  wskazuje liczbę bloków przypisanych do pliku, w 512 bajtowych jednostkach (może być mniejsze
              niż st_size/512 gdy plik ma dziury).

              Standard POSIX.1 zauważa, że jednostka  st_blocks  będącego  składową  struktury  stat,  nie  jest
              zdefiniowana  standardem.  W wielu implementacjach jest to 512 bajtów; na kilku systemach korzysta
              się z innej jednostki np. 1024. Co więcej, jednostka może  się  różnić  w  zależności  od  systemu
              plików.

       Znacznik czasowy ostatniego dostępu (atime — ang. access time)
              stat.st_atime; statx.stx_atime

              Znacznik  czasowy  ostatniego  dostępu  do pliku. Zmienia się przy uzyskaniu dostępu do pliku, np.
              przez execve(2), mknod(2), pipe(2),  utime(2)  i  read(2)  (dla  więcej  niż  zera  bajtów).  Inne
              interfejsy, takie jak mmap(2), mogą nie aktualizować znacznika czasu atime.

              Niektóre  typy  systemu  plików  zezwalają  na montowanie w sposób, w którym dostęp do pliku i/lub
              katalogu nie powoduje aktualizacji znacznika czasu atime (zob. noatime, nodiratime  i  relatime  w
              podręczniku  mount(8) oraz powiązane informacje w podręczniku mount(2)). Dodatkowo, znacznik atime
              nie jest aktualizowany, gdy plik otwarto ze znacznikiem O_NOATIME; zob. open(2).

       Znacznik czasowy utworzenia pliku (btime — ang. birth time)
              (nie jest zwracany w strukturze stat); statx.stx_btime

              Znacznik czasowy utworzenia pliku. Jest ustawiany  przy  utworzeniu  pliku  i  nie  ulega  później
              zmianie.

              Znacznik czasowy btime nie był historycznie obecny w systemach UNIX i nie jest obecnie obsługiwany
              przez większość linuksowych systemów plików.

       Znacznik czasowy ostatniej modyfikacji (mtime)
              stat.st_mtime; statx.stx_mtime

              Znacznik  czasowy  ostatniej  modyfikacji pliku. Zmienia się przy modyfikacji pliku, np. za pomocą
              mknod(2), truncate(2), utime(2) i write(2) (więcej niż zera bajtów). Co  więcej  znacznik  czasowy
              mtime  katalogu  jest zmieniany przy tworzeniu i kasowaniu plików w tym katalogu. Znacznik czasowy
              mtime nie jest zmieniany przy zmianie właściciela, grupy, liczby dowiązań zwykłych lub trybu.

       Znacznik czasowy ostatniej zmiany statusu (ctime — ang. change time)
              stat.st_ctime; statx.stx_ctime

              Znacznik czasu ostatniej zmiany  statusu  pliku.  Zmienia  się  przy  zapisywaniu  lub  ustawianiu
              informacji i-węzła (tj. właściciela, grupy, liczby dowiązań, trybu itd.).

       Pola znaczników czasu zgłaszają czas mierzony od Epoki tj. 1970-01-01 00:00:00 +0000, UTC (zob. time(7)).

       Nanosekundowe  znaczniki  czasowe  są  obsługiwane  w systemach plików XFS, JFS, Btrfs i ext4 (od Linuksa
       2.6.23). Znaczniki nanosekundowe nie są obsługiwane w ext2, ext3 i Reiserfs. Aby zwrócić znaczniki  czasu
       z  nanosekundową precyzją, pola znacznika czasu w strukturach stat i statx są zdefiniowane jako struktury
       zawierające cząstkę nanosekund. Więcej szczegółów w podręcznikach stat(2) i statx(2). W systemach  plików
       nieobsługujących  znaczników  czasowych dokładniejszych niż sekunda, pola nanosekund w strukturach stat i
       statx są zwracane z wartością 0.

   Typ i tryb pliku
       Pole stat.st_mode (w przypadku statx(2): pole statx.stx_mode) zawiera typ i tryb pliku.

       POSIX odnosi się do bitów stat.st_mode związanych z maską S_IFMT (zob. niżej) jako typu pliku,  12  bitów
       odnoszących  się  do  maski 07777 jako bitów trybu pliku, a najmniej znaczących 9 bitów (0777) jako bitów
       uprawnień pliku.

       Zdefiniowano następujące wartości maski dla typu pliku
           S_IFMT     0170000   maska bitowa dla pola bitów typu pliku

           S_IFSOCK   0140000   gniazdo
           S_IFLNK    0120000   dowiązanie symboliczne
           S_IFREG    0100000   zwykły plik
           S_IFBLK    0060000   urządzenie blokowe
           S_IFDIR    0040000   katalog
           S_IFCHR    0020000   urządzenie znakowe
           S_IFIFO    0010000   FIFO

       Zatem aby sprawdzić, czy plik jest np. zwykłym plikiem, można użyć:

           stat(pathname, &sb);
           if ((sb.st_mode & S_IFMT) == S_IFREG) {
               /* Obsługa zwykłego pliku */
           }

       Ze względu na powszechność testów w powyższej postaci, POSIX zdefiniował dodatkowe makra,  aby  umożliwić
       spójniejsze zapisywanie testów typu pliku st_mode:

           S_ISREG(m)  czy to zwykły plik?

           S_ISDIR(m)  katalog?

           S_ISCHR(m)  urządzenie znakowe?

           S_ISBLK(m)  urządzenie blokowe?

           S_ISFIFO(m) FIFO (potok nazwany)?

           S_ISLNK(m)  dowiązanie symboliczne? (nie występuje w POSIX.1-1996)

           S_ISSOCK(m) gniazdo? (nie występuje w POSIX.1-1996)

       Wcześniejszy wycinek kodu można zatem przepisać jako:

           stat(pathname, &sb);
           if (S_ISREG(sb.st_mode)) {
               /* Obsługa zwykłego pliku */
           }

       Definicje  większości  z  powyższych makr testujących typ pliku są udostępniane, jeśli włączono dowolny z
       następujących testowych makr funkcji: _BSD_SOURCE (w glibc 2.19 i wcześniejszych), _SVID_SOURCE (w  glibc
       2.19 i wcześniejszych) lub _DEFAULT_SOURCE (w glibc 2.20 i późniejszych). Dodatkowo, definicje wszystkich
       powyższych makr poza S_IFSOCK i S_ISSOCK() są udostępniane, jeśli zdefiniowano _XOPEN_SOURCE.

       Definicja  S_IFSOCK  może  być  również  ujawniona  przez zdefiniowanie _XOPEN_SOURCE z wartością 500 lub
       większą albo (od glibc 2.24) przez zdefiniowanie zarówno _XOPEN_SOURCE jak i _XOPEN_SOURCE_EXTENDED.

       Definicja S_ISSOCK() jest ujawniana, gdy zdefiniowane dowolne z  następujących  testowych  makr  funkcji:
       _BSD_SOURCE (w glibc 2.19 i wcześniejszych), _DEFAULT_SOURCE (w glibc 2.20 i późniejszych), _XOPEN_SOURCE
       z  wartością  500 lub większą, _POSIX_C_SOURCE z wartością 200112L lub większą albo (od glibc 2.24) przez
       zdefiniowanie zarówno _XOPEN_SOURCE jak i _XOPEN_SOURCE_EXTENDED.

       W komponencie trybu pliku pola st_mode zdefiniowano następujące wartości masek:
           S_ISUID     04000   bit set-user-ID (zob. execve(2))
           S_ISGID     02000   bit set-group-ID (zob. niżej)
           S_ISVTX     01000   bit lepkości (zob. niżej)

           S_IRWXU     00700   właściciel ma uprawnienia odczytu, zapisu i wykonania
           S_IRUSR     00400   właściciel ma uprawnienie odczytu
           S_IWUSR     00200   właściciel ma uprawnienie zapisu
           S_IXUSR     00100   właściciel ma uprawnienie wykonania

           S_IRWXG     00070   grupa ma uprawnienia odczytu, zapisu i wykonania
           S_IRGRP     00040   grupa ma uprawnienie odczytu
           S_IWGRP     00020   grupa ma uprawnienie zapisu
           S_IXGRP     00010   grupa ma uprawnienie wykonania

           S_IRWXO     00007   inni (poza grupą) mają uprawnienia odczytu, zapisu i wykonania
           S_IROTH     00004   inni mają uprawnienie odczytu
           S_IWOTH     00002   inni mają uprawnienie zapisu
           S_IXOTH     00001   inni mają uprawnienie wykonania

       Bit set-group-ID (S_ISGID) ma kilka specjalnych zastosowań. W przypadku katalogu wskazuje, że dla  danego
       katalogu  ma być używana semantyka BSD: tworzone w nim pliki dziedziczą identyfikator tworzącego procesu,
       a tworzone w nim katalogi dziedziczą również ustawienie bitu S_ISGID. W  przypadku  pliku  wykonywalnego,
       bit set-group-ID powoduje zmianę efektywnego identyfikatora grupy procesu, który wykonuje plik, zgodnie z
       opisem w podręczniku execve(2). W przypadku pliku, który nie posiada ustawionego bitu wykonania dla grupy
       (S_IXGRP), bit set-group-ID wskazuje obowiązkowe blokowanie pliku/rekordu.

       Bit  lepkości  (S_ISVTX) w przypadku katalogu oznacza, że wobec pliku w tym katalogu, jedynie: właściciel
       pliku, właściciel katalogu lub proces uprzywilejowany może zmienić nazwę pliku lub go usunąć.

STANDARDY

       POSIX.1-2008.

HISTORIA

       POSIX.1-2001.

       POSIX.1-1990 nie opisuje stałych S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR, S_IFIFO i
       S_ISVTX, lecz określa użycie makr S_ISDIR() itd.

       Makra S_ISLNK() i S_ISSOCK() nie występowały w POSIX.1-1996; pierwsze pochodzi z SVID 4, drugie z SUSv2.

       UNIX V7 (i późniejsze systemy) posiadały S_IREAD, S_IWRITE, S_IEXEC w  miejscu  określonych  przez  POSIX
       synonimów S_IRUSR, S_IWUSR i S_IXUSR.

UWAGI

       Zgłaszany  przez  jądro  rozmiar  pliku  (stat.st_size;  statx.stx_size) nie jest prawidłowy, w przypadku
       pseudoplików generowanych automatycznie przez jądro. Przykładowo zwracana  jest  wartość  0  wobec  wielu
       plików  w  katalogu  /proc, natomiast wiele plików w katalogu /sys zgłasza rozmiar 4096 bajtów nawet, gdy
       zawartość pliku jest mniejsza. W przypadku ww. plików powinno się próbować odczytać tak wiele bajtów, jak
       to możliwe (i dodać „\0” do zwracanego bufora, jeśli ma być interpretowany jako łańcuch tekstowy).

ZOBACZ TAKŻE

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

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Michał Kułach <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.8                              2 maja 2024 r.                                         inode(7)