oracular (7) inode.7.gz

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⟩.