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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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⟩.