.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright (c) 2017 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH inode 7 "30 lipca 2023 r." "Linux man\-pages 6.05.01" 
.SH NAZWA
inode \- informacja o i\-węźle pliku
.SH OPIS
Każdy plik posiada i\-węzeł z metadanymi o pliku. Aplikacja może pobrać te
metadane za pomocą \fBstat\fP(2) (lub powiązanych wywołań), które zwraca
strukturę \fIstat\fP albo za pomocą \fBstatx\fP(2), które zwraca strukturę
\fIstatx\fP.
.PP
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 \fBstat\fP(2) i
\fBstatx\fP(2):
.TP 
Urządzenie, na którym występuje i\-węzeł
\fIstat.st_dev\fP; \fIstatx.stx_dev_minor\fP i \fIstatx.stx_dev_major\fP
.IP
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).
.TP 
Numer i\-węzła
\fIstat.st_ino\fP; \fIstatx.stx_ino\fP
.IP
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.
.TP 
Typ i tryb pliku
\fIstat.st_mode\fP; \fIstatx.stx_mode\fP
.IP
Zob. opis typu i trybu pliku, poniżej.
.TP 
Liczba dowiązań
\fIstat.st_nlink\fP; \fIstatx.stx_nlink\fP
.IP
Pole zawiera liczbę dowiązań zwykłych (twardych) do pliku. Dodatkowe
dowiązania do istniejącego pliku tworzy się za pomocą \fBlink\fP(2).
.TP 
Identyfikator użytkownika
\fIst_uid\fP \fIstat.st_uid\fP; \fIstatx.stx_uid\fP
.IP
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ą \fBchown\fP(2).
.TP 
Identyfikator grupy
\fIstat.st_gid\fP; \fIstatx.stx_gid\fP
.IP
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ą \fBchown\fP(2).
.TP 
Urządzenie reprezentowane przez ten i\-węzeł
\fIstat.st_rdev\fP; \fIstatx.stx_rdev_minor\fP i \fIstatx.stx_rdev_major\fP
.IP
Jeśli ten plik (i\-węzeł) reprezentuje urządzenie, to i\-węzeł zapisuje główny
i poboczny identyfikator tego urządzenia.
.TP 
Rozmiar pliku
\fIstat.st_size\fP; \fIstatx.stx_size\fP
.IP
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.
.TP 
Preferowany rozmiar bloku do wejścia/wyjścia
\fIstat.st_blksize\fP; \fIstatx.stx_blksize\fP
.IP
Pole ujawnia \[Bq]preferowany\[rq] 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).
.TP 
Liczba bloków przypisanych do pliku
\fIstat.st_blocks\fP; \fIstatx.stx_size\fP
.IP
Pole wskazuje liczbę bloków przypisanych do pliku, w 512 bajtowych
jednostkach (może być mniejsze niż \fIst_size\fP/512 gdy plik ma dziury).
.IP
.\" Rationale for sys/stat.h in POSIX.1-2008
Standard POSIX.1 zauważa, że jednostka \fIst_blocks\fP będącego składową
struktury \fIstat\fP, 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.
.TP 
Znacznik czasowy ostatniego dostępu (atime \[em] ang. access time)
\fIstat.st_atime\fP; \fIstatx.stx_atime\fP
.IP
Znacznik czasowy ostatniego dostępu do pliku. Zmienia się przy uzyskaniu
dostępu do pliku, np. przez \fBexecve\fP(2), \fBmknod\fP(2), \fBpipe\fP(2),
\fButime\fP(2) i \fBread\fP(2) (dla więcej niż zera bajtów). Inne interfejsy,
takie jak \fBmmap\fP(2), mogą nie aktualizować znacznika czasu atime.
.IP
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. \fInoatime\fP, \fInodiratime\fP i \fIrelatime\fP w podręczniku
\fBmount\fP(8) oraz powiązane informacje w podręczniku \fBmount\fP(2)). Dodatkowo,
znacznik atime nie jest aktualizowany, gdy plik otwarto ze znacznikiem
\fBO_NOATIME\fP; zob. \fBopen\fP(2).
.TP 
Znacznik czasowy utworzenia pliku (btime \[em] ang. birth time)
(nie jest zwracany w strukturze \fIstat\fP); \fIstatx.stx_btime\fP
.IP
Znacznik czasowy utworzenia pliku. Jest ustawiany przy utworzeniu pliku i
nie ulega później zmianie.
.IP
.\" FIXME Is it supported on ext4 and XFS?
Znacznik czasowy btime nie był historycznie obecny w systemach UNIX i nie
jest obecnie obsługiwany przez większość linuksowych systemów plików.
.TP 
Znacznik czasowy ostatniej modyfikacji (mtime)
\fIstat.st_mtime\fP; \fIstatx.stx_mtime\fP
.IP
Znacznik czasowy ostatniej modyfikacji pliku. Zmienia się przy modyfikacji
pliku, np. za pomocą \fBmknod\fP(2), \fBtruncate\fP(2), \fButime\fP(2) i \fBwrite\fP(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 \fInie\fP jest zmieniany przy zmianie właściciela, grupy, liczby dowiązań
zwykłych lub trybu.
.TP 
Znacznik czasowy ostatniej zmiany statusu (ctime \[em] ang. change time)
\fIstat.st_ctime\fP; \fIstatx.stx_ctime\fP
.IP
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.).
.PP
Pola znaczników czasu zgłaszają czas mierzony od \fIEpoki\fP tj. 1970\-01\-01
00:00:00 +0000, UTC (zob. \fBtime\fP(7)).
.PP
.\" commit ef7f38359ea8b3e9c7f2cae9a4d4935f55ca9e80
.\"
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 \fIstat\fP i \fIstatx\fP są
zdefiniowane jako struktury zawierające cząstkę nanosekund. Więcej
szczegółów w podręcznikach \fBstat\fP(2) i \fBstatx\fP(2). W systemach plików
nieobsługujących znaczników czasowych dokładniejszych niż sekunda, pola
nanosekund w strukturach \fIstat\fP i \fIstatx\fP są zwracane z wartością 0.
.SS "Typ i tryb pliku"
Pole \fIstat.st_mode\fP (w przypadku \fBstatx\fP(2): pole \fIstatx.stx_mode\fP)
zawiera typ i tryb pliku.
.PP
POSIX odnosi się do bitów \fIstat.st_mode\fP związanych z maską \fBS_IFMT\fP
(zob. niżej) jako \fItypu pliku\fP, 12 bitów odnoszących się do maski 07777
jako \fIbitów trybu pliku\fP, a najmniej znaczących 9 bitów (0777) jako \fIbitów uprawnień pliku\fP.
.PP
Zdefiniowano następujące wartości maski dla typu pliku
.in +4n
.TS
lB l l.
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
.TE
.in
.PP
Zatem aby sprawdzić, czy plik jest np. zwykłym plikiem, można użyć:
.PP
.in +4n
.EX
stat(pathname, &sb);
if ((sb.st_mode & S_IFMT) == S_IFREG) {
    /* Obsługa zwykłego pliku */
}
.EE
.in
.PP
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
\fIst_mode\fP:
.RS 4
.TP  1.2i
\fBS_ISREG\fP(m)
czy to zwykły plik?
.TP 
\fBS_ISDIR\fP(m)
katalog?
.TP 
\fBS_ISCHR\fP(m)
urządzenie znakowe?
.TP 
\fBS_ISBLK\fP(m)
urządzenie blokowe?
.TP 
\fBS_ISFIFO\fP(m)
FIFO (potok nazwany)?
.TP 
\fBS_ISLNK\fP(m)
dowiązanie symboliczne? (nie występuje w POSIX.1\-1996)
.TP 
\fBS_ISSOCK\fP(m)
gniazdo? (nie występuje w POSIX.1\-1996)
.RE
.PP
Wcześniejszy wycinek kodu można zatem przepisać jako:
.PP
.in +4n
.EX
stat(pathname, &sb);
if (S_ISREG(sb.st_mode)) {
    /* Obsługa zwykłego pliku */
}
.EE
.in
.PP
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:
\fB_BSD_SOURCE\fP (w glibc 2.19 i wcześniejszych), \fB_SVID_SOURCE\fP (w glibc
2.19 i wcześniejszych) lub \fB_DEFAULT_SOURCE\fP (w glibc 2.20 i
późniejszych). Dodatkowo, definicje wszystkich powyższych makr poza
\fBS_IFSOCK\fP i \fBS_ISSOCK\fP() są udostępniane, jeśli zdefiniowano
\fB_XOPEN_SOURCE\fP.
.PP
Definicja \fBS_IFSOCK\fP może być również ujawniona przez zdefiniowanie
\fB_XOPEN_SOURCE\fP z wartością 500 lub większą albo (od glibc 2.24) przez
zdefiniowanie zarówno \fB_XOPEN_SOURCE\fP jak i \fB_XOPEN_SOURCE_EXTENDED\fP.
.PP
Definicja \fBS_ISSOCK\fP() jest ujawniana, gdy zdefiniowane dowolne z
następujących testowych makr funkcji: \fB_BSD_SOURCE\fP (w glibc 2.19 i
wcześniejszych), \fB_DEFAULT_SOURCE\fP (w glibc 2.20 i późniejszych),
\fB_XOPEN_SOURCE\fP z wartością 500 lub większą, \fB_POSIX_C_SOURCE\fP z wartością
200112L lub większą albo (od glibc 2.24) przez zdefiniowanie zarówno
\fB_XOPEN_SOURCE\fP jak i \fB_XOPEN_SOURCE_EXTENDED\fP.
.PP
W komponencie trybu pliku pola \fIst_mode\fP zdefiniowano następujące wartości
masek:
.in +4n
.TS
lB l lx.
S_ISUID	  04000	T{
bit set\-user\-ID (zob. \fBexecve\fP(2))
T}
S_ISGID	  02000	T{
bit set\-group\-ID (zob. niżej)
T}
S_ISVTX	  01000	T{
bit lepkości (zob. niżej)
T}

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

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

S_IRWXO	  00007	T{
inni (poza grupą) mają uprawnienia odczytu, zapisu i wykonania
T}
S_IROTH	  00004	T{
inni mają uprawnienie odczytu
T}
S_IWOTH	  00002	T{
inni mają uprawnienie zapisu
T}
S_IXOTH	  00001	T{
inni mają uprawnienie wykonania
T}
.TE
.in
.PP
Bit set\-group\-ID (\fBS_ISGID\fP) 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 \fBS_ISGID\fP. W przypadku
pliku wykonywalnego, bit set\-group\-ID powoduje zmianę efektywnego
identyfikatora grupy procesu, który wykonuje plik, zgodnie z opisem w
podręczniku \fBexecve\fP(2). W przypadku pliku, który nie posiada ustawionego
bitu wykonania dla grupy (\fBS_IXGRP\fP), bit set\-group\-ID wskazuje obowiązkowe
blokowanie pliku/rekordu.
.PP
Bit lepkości (\fBS_ISVTX\fP) 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ąć.
.SH STANDARDY
POSIX.1\-2008.
.SH HISTORIA
POSIX.1\-2001.
.PP
POSIX.1\-1990 nie opisuje stałych \fBS_IFMT\fP, \fBS_IFSOCK\fP, \fBS_IFLNK\fP,
\fBS_IFREG\fP, \fBS_IFBLK\fP, \fBS_IFDIR\fP, \fBS_IFCHR\fP, \fBS_IFIFO\fP i \fBS_ISVTX\fP,
lecz określa użycie makr \fBS_ISDIR\fP() itd.
.PP
Makra \fBS_ISLNK\fP() i \fBS_ISSOCK\fP() nie występowały w POSIX.1\-1996; pierwsze
pochodzi z SVID 4, drugie z SUSv2.
.PP
UNIX\ V7 (i późniejsze systemy) posiadały \fBS_IREAD\fP, \fBS_IWRITE\fP,
\fBS_IEXEC\fP w miejscu określonych przez POSIX synonimów \fBS_IRUSR\fP,
\fBS_IWUSR\fP i \fBS_IXUSR\fP.
.SH UWAGI
Zgłaszany przez jądro rozmiar pliku (\fIstat.st_size\fP; \fIstatx.stx_size\fP) 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
\fI/proc\fP, natomiast wiele plików w katalogu \fI/sys\fP 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ć
\[Bq]\e0\[rq] do zwracanego bufora, jeśli ma być interpretowany jako łańcuch
tekstowy).
.SH "ZOBACZ TAKŻE"
\fBstat\fP(1), \fBstat\fP(2), \fBstatx\fP(2), \fBsymlink\fP(7)
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Michał Kułach <michal.kulach@gmail.com>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
