.\" -*- coding: UTF-8 -*-
.\" Copyright (c) 2007 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" 2007-06-13 Creation
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH credentials 7 "30 marca 2023 r." "Linux man\-pages 6.05.01" 
.SH NAZWA
credentials \- identyfikatory procesu
.SH OPIS
.SS "Identyfikator procesu (PID)"
Każdy proces posiada unikatowy identyfikator będący liczbą nieujemną, który
jest mu przypisywany w trakcie tworzenia procesu za pomocą
\fBfork\fP(2). Proces może pozyskać swój PID wywołaniem \fBgetpid\fP(2). PID jest
reprezentowany za pomocą typu \fIpid_t\fP (zdefiniowanego w
\fI<sys/types.h>\fP).
.PP
.\" .BR sched_rr_get_interval (2),
.\" .BR sched_getaffinity (2),
.\" .BR sched_setaffinity (2),
.\" .BR sched_getparam (2),
.\" .BR sched_setparam (2),
.\" .BR sched_setscheduler (2),
.\" .BR sched_getscheduler (2),
.\" .BR getsid (2),
.\" .BR waitid (2),
.\" .BR wait4 (2),
PID\-y są używane w wielu wywołaniach systemowych, do identyfikacji procesu,
którego dotyczy wywołanie np. \fBkill\fP(2), \fBptrace\fP(2), \fBsetpriority\fP(2),
\fBsetpgid\fP(2), \fBsetsid\fP(2), \fBsigqueue\fP(3) i \fBwaitpid\fP(2).
.PP
PID procesu jest zachowywany przez \fBexecve\fP(2).
.SS "Identyfikator procesu macierzystego (PPID)"
Identyfikator procesu macierzystego (ang. parent process ID \[em] PPID)
identyfikuje proces, który utworzył dany proces za pomocą \fBfork\fP(2). Proces
może uzyskać swój PPID wywołaniem \fBgetppid\fP(2). PPID jest reprezentowany za
pomocą typu \fIpid_t\fP.
.PP
PPID procesu jest zachowywany przez \fBexecve\fP(2).
.SS "Identyfikator grupy procesu oraz identyfikator sesji"
Każdy proces posiada identyfikator sesji oraz identyfikator grupy procesu,
oba reprezentowane za pomocą typu \fIpid_t\fP. Proces może uzyskać swój
identyfikator sesji wywołaniem \fBgetsid\fP(2), a swój identyfikator grupy
procesu wywołaniem \fBgetpgrp\fP(2).
.PP
Proces potomny utworzony przez \fBfork\fP(2) dziedziczy identyfikator sesji
oraz identyfikator grupy procesu swojego procesu
macierzystego. Identyfikator sesji procesu oraz identyfikator grupy procesu
są zachowywane przez \fBexecve\fP(2).
.PP
Sesje i grupy procesów są abstrakcjami pomyślanymi jako wsparcie kontroli
pracy powłoki. Grupa procesu (czasem nazywana \[Bq]zadaniem\[rq] \[em]
ang. \[Bq]job\[rq]) jest zbiorem procesów dzielących ten sam identyfikator
grupy procesu; powłoka tworzy nową grupę procesu procesowi/procesom użytym
do wykonania pojedynczego polecenia lub potoku (np. dwa procesy tworzone do
wykonania polecenia \[Bq]ls\ |\ wc\[rq] są umieszczane w tej samem grupie
procesu). Członkostwo w grupie procesu można ustawić wywołaniem
\fBsetpgid\fP(2). Proces, którego PID jest taki sam jak jego identyfikator
grupy procesu jest \fIliderem grupy procesu\fP dla danej grupy.
.PP
Sesja jest zbiorem procesów dzielących ten sam identyfikator sesji. Wszyscy
członkowie grupy procesu mają również ten sam identyfikator sesji
(tj. wszyscy członkowie grupy procesu zawsze przynależą do tej samem sesji,
zatem sesje i grupy procesu stanowią ścisłą, dwustopniową hierarchię
procesów). Nową sesję tworzy wywołanie przez proces \fBsetsid\fP(2), co
powoduje utworzenie sesji z identyfikatorem sesji takim samym, jak PID
procesu wywołującego \fBsetsid\fP(2). Twórca sesji jest nazywany \fIliderem sesji\fP.
.PP
Wszystkie procesy w sesji dzielą \fIterminal kontrolujący\fP. Termin
kontrolujący jest ustanawiany, gdy lider sesji otworzy pierwotnie terminal
(chyba że podano znacznik \fBO_NOCTTY\fP przy wywołaniu \fBopen\fP(2)). Terminal
może być terminalem kontrolującym co najwyżej jednej sesji.
.PP
Maksymalne jedno zadanie w powłoce może być \fIzadaniem pierszoplanowym\fP;
pozostałe zadania w powłoce są \fIzadaniami tła\fP. Z terminala może czytać
jedynie zadanie pierwszoplanowe; gdy proces w tle spróbuje odczytać z
terminala, jego grupa procesu otrzymuje sygnał \fBSIGTTIN\fP, zawieszający
zadanie. Gdy dla terminala ustawi się znacznik \fBTOSTOP\fP
(zob. \fBtermios\fP(3)), to tylko zadania pierwszoplanowe mogą pisać do
terminala; zapisy od zadań tła spowodują wygenerowanie sygnału \fBSIGTTOU\fP,
zawieszającego zadanie. Gdy użyje się klawiszy terminala do wygenerowania
sygnału (np. klawisz \fIprzerwania\fP, zwykle control\-C), sygnał jest wysyłany
do procesów będących zadaniem pierwszoplanowym.
.PP
Istnieje wiele wywołań systemowych i funkcji bibliotecznych, które mogą
działać na wszystkich członkach grupy procesu, są to m.in \fBkill\fP(2),
\fBkillpg\fP(3), \fBgetpriority\fP(2), \fBsetpriority\fP(2), \fBioprio_get\fP(2),
\fBioprio_set\fP(2), \fBwaitid\fP(2) i \fBwaitpid\fP(2). Zob. też opis operacji
\fBF_GETOWN\fP, \fBF_GETOWN_EX\fP, \fBF_SETOWN\fP i \fBF_SETOWN_EX\fP w podręczniku
\fBfcntl\fP(2).
.SS "Identyfikatory użytkownika i grupy"
Każdy proces ma wiele powiązanych identyfikatorów użytkownika i
grupy. Identyfikatory te są liczbami, reprezentowanymi za pomocą typów,
odpowiednio, \fIuid_t\fP i \fIgid_t\fP (zdefiniowanych w
\fI<sys/types.h>\fP).
.PP
W Linuksie, każdy proces ma następujące identyfikatory użytkownika i grupy:
.IP \[bu] 3
Rzeczywisty identyfikator użytkownika i rzeczywisty identyfikator
grupy. Identyfikatory te służą do określenia właściciela procesu. Procesy
mogą uzyskać swój rzeczywisty identyfikator użytkownika (grupy) za pomocą
\fBgetuid\fP(2) (\fBgetgid\fP(2)).
.IP \[bu]
Efektywny identyfikator użytkownika i efektywny identyfikator
grupy. Identyfikatory te są używane przez jądro, aby określić uprawnienia
jakie będzie posiadał proces, przy dostępie do zasobów dzielonych, takich
jak kolejek komunikatów, pamięci dzielonej lub semaforów. W większości
systemów uniksowych, te identyfikatory określają również uprawnienia dostępu
do plików. W Linuksie służą do tego jednak, opisane niżej, identyfikatory
systemu plików. Proces może uzyskać swój efektywny identyfikator użytkownika
(grupy) za pomocą \fBgeteuid\fP(2) (\fBgetegid\fP(2)).
.IP \[bu]
Zapisany set\-user\-ID i zapisany set\-group\-ID. Identyfikatory te są używane
przez programy korzystające z ustawiania identyfikatora użytkownika (suid)
lub grupy (sgid) przy wykonaniu, do zapisania odpowiadających
identyfikatorów efektywnych, ustawianych przy wykonaniu programu
(zob. \fBexecve\fP(2)). Program suid może nabyć i porzucić przywileje przez
przełączanie swojego efektywnego identyfikatora użytkownika pomiędzy
wartościami jego rzeczywistego identyfikatora użytkownika, a wartościami
zapisanego suid. Przełączanie następuje za pomocą wywołań \fBseteuid\fP(2),
\fBsetreuid\fP(2) lub \fBsetresuid\fP(2). Programy sgid wykonują analogiczne
działania za pomocą \fBsetegid\fP(2), \fBsetregid\fP(2) lub
\fBsetresgid\fP(2). Procesy mogą uzyskać swój zapisany suid (zapisany sgid) za
pomocą \fBgetresuid\fP(2) (\fBgetresgid\fP(2)).
.IP \[bu]
Identyfikator użytkownika systemu plików i identyfikator grupy systemu
plików (typowo linuksowe). Identyfikatory te, razem z opisanymi poniżej
identyfikatorami grup uzupełniających, służą do określenia uprawnień dostępu
do plików; więcej szczegółów w podręczniku \fBpath_resolution\fP(7). Gdy
efektywny identyfikator użytkownika (grupy) procesu ulega zmianie, jądro
automatycznie zmienia identyfikator użytkownika (grupy) systemu plików na tę
samą wartość. Identyfikatory systemu plików mają zatem zwykle te same
wartości jak odpowiadające im identyfikatory efektywne co oznacza, że
semantyka kontroli uprawnień do plików jest w Linuksie taka sama, jak w
innych systemach uniksowych. Identyfikatory systemu plików można jednak
uczynić różnymi od identyfikator efektywnych, za pomocą wywołań
\fBsetfsuid\fP(2) i \fBsetfsgid\fP(2).
.IP \[bu]
.\" Since Linux 2.6.4, the limit is visible via the read-only file
.\" /proc/sys/kernel/ngroups_max.
.\" As at 2.6.22-rc2, this file is still read-only.
Identyfikatory grup uzupełniających (dodatkowych). Stanowią one
identyfikatory grup dodatkowych, używanych do kontroli uprawnień dostępu do
plików i innych wspólnych zasobów. Przed Linuksem 2.6.4, proces mógł być
członkiem co najwyżej 32 grup uzupełniających; od Linuksa 2.6.4 to
ograniczenie zwiększono do 65536 grup uzupełniających. Do uzyskania liczby
grup uzupełniających, jakich proces może być członkiem można posłużyć się
wywołaniem \fIsysconf(_SC_NGROUPS_MAX)\fP. Proces może uzyskać swój zestaw
identyfikatorów grup uzupełniających za pomocą wywołania \fBgetgroups\fP(2).
.PP
Proces potomny utworzony wywołaniem \fBfork\fP(2) dziedziczy kopie
identyfikatorów użytkownika i grupy swojego procesu macierzystego. Podczas
\fBexecve\fP(2) zachowywane są rzeczywiste identyfikatory użytkownika i grupy
procesu, a także identyfikatory grup uzupełniających; natomiast
identyfikatory efektywne i zapisane suid/sgid można zmieniać, zgodnie z
opisem w \fBexecve\fP(2).
.PP
Oprócz przeznaczenia opisanego wyżej, identyfikatory użytkownika procesu są
używane również w wielu innych sytuacjach:
.IP \[bu] 3
przy określaniu uprawnień do wysyłania sygnałów (zob. \fBkill\fP(2));
.IP \[bu]
przy określaniu uprawnień do ustawiania parametrów planisty związanych z
procesem (wartość nice, priorytet i zasady planisty czasu rzeczywistego,
koligacja procesorów, priorytet wejścia/wyjścia) za pomocą
\fBsetpriority\fP(2), \fBsched_setaffinity\fP(2), \fBsched_setscheduler\fP(2),
\fBsched_setparam\fP(2), \fBsched_setattr\fP(2) i \fBioprio_set\fP(2);
.IP \[bu]
przy sprawdzania limitów zasobów (zob. \fBgetrlimit\fP(2));
.IP \[bu]
.\"
przy sprawdzaniu limitu liczby wystąpień inotify, jakie może utworzyć proces
(zob. \fBinotify\fP(7)).
.SS "Modyfikowanie identyfikatorów użytkownika i grupy procesu"
Zgodnie z zasadami opisanymi we właściwych podręcznikach systemowych, proces
może użyć następujących interfejsów programistycznych w celu modyfikacji
swoich identyfikatorów użytkownika i grupy:
.TP 
\fBsetuid\fP(2) (\fBsetgid\fP(2))
Modyfikuje rzeczywiste (może również efektywne i zapisane suid/sgid)
identyfikatory użytkownika (grupy) procesu.
.TP 
\fBseteuid\fP(2) (\fBsetegid\fP(2))
Modyfikuje efektywny identyfikator użytkownika (grupy) procesu.
.TP 
\fBsetfsuid\fP(2) (\fBsetfsgid\fP(2))
Modyfikuje identyfikator użytkownika (grupy) systemu plików procesu.
.TP 
\fBsetreuid\fP(2) (\fBsetregid\fP(2))
Modyfikuje rzeczywiste i efektywne (może również zapisane suid/sgid)
identyfikatory użytkownika (grupy) procesu.
.TP 
\fBsetresuid\fP(2) (\fBsetresgid\fP(2))
Modyfikuje rzeczywiste, efektywne i zapisane suid/sgid identyfikatory
użytkownika (grupy) procesu.
.TP 
\fBsetgroups\fP(2)
Modyfikuje listę grup uzupełniających procesu.
.PP
Wszelkie zmiany w identyfikatorach efektywnych użytkownika (grupy) procesu
są automatycznie przenoszone na identyfikatory użytkownika (grupy) systemu
plików procesu. Zmiany w identyfikatorach efektywnych użytkownika (grupy)
procesu mogą również wpływać na atrybut procesu \[Bq]zrzucalności\[rq]
(ang. \[Bq]dumpable\[rq]), zgodnie z opisem w podręczniku \fBprctl\fP(2).
.PP
Zmiany identyfikatorów efektywnych użytkownika (grupy) procesu mogą wpłynąć
na jego przywileje, zgodnie z opisem w podręczniku \fBcapabilities\fP(7).
.SH STANDARDY
Identyfikatory: procesu, procesu macierzystego, grupy procesu oraz sesji są
określone w normie POSIX.1. Identyfikatory użytkownika i grupy: rzeczywiste,
efektywne, zapisane suid/sgid są określone w POSIX.1.
.PP
Identyfikatory użytkownika i grupy systemu plików są rozszerzeniem Linuksa.
.SH UWAGI
Różne pola w pliku \fI/proc/\fPpid\fI/status\fP ukazują opisane wyżej
poświadczenia procesu. Więcej informacji w podręczniku systemowym
\fBproc\fP(5).
.PP
Standard wątków określony przez POSIX wymaga, aby poświadczenia były
dzielone przez wszystkie wątki procesu. Na poziomie jądra, Linux zarządza
jednak osobnymi poświadczeniami użytkownika i grupy dla każdego
wątku. Implementacja wątkowania NPTL czyni pewne starania aby zapewnić, że
wszelkie zmiany poświadczeń użytkownika lub grupy (np. wywołania do
\fBsetuid\fP(2), \fBsetresuid\fP(2)) są przenoszone na wszystkie wątki POSIX
procesu. Więcej szczegółów w podręczniku \fBnptl\fP(7).
.SH "ZOBACZ TAKŻE"
\fBbash\fP(1), \fBcsh\fP(1), \fBgroups\fP(1), \fBid\fP(1), \fBnewgrp\fP(1), \fBps\fP(1),
\fBrunuser\fP(1), \fBsetpriv\fP(1), \fBsg\fP(1), \fBsu\fP(1), \fBaccess\fP(2),
\fBexecve\fP(2), \fBfaccessat\fP(2), \fBfork\fP(2), \fBgetgroups\fP(2), \fBgetpgrp\fP(2),
\fBgetpid\fP(2), \fBgetppid\fP(2), \fBgetsid\fP(2), \fBkill\fP(2), \fBsetegid\fP(2),
\fBseteuid\fP(2), \fBsetfsgid\fP(2), \fBsetfsuid\fP(2), \fBsetgid\fP(2),
\fBsetgroups\fP(2), \fBsetpgid\fP(2), \fBsetresgid\fP(2), \fBsetresuid\fP(2),
\fBsetsid\fP(2), \fBsetuid\fP(2), \fBwaitpid\fP(2), \fBeuidaccess\fP(3),
\fBinitgroups\fP(3), \fBkillpg\fP(3), \fBtcgetpgrp\fP(3), \fBtcgetsid\fP(3),
\fBtcsetpgrp\fP(3), \fBgroup\fP(5), \fBpasswd\fP(5), \fBshadow\fP(5),
\fBcapabilities\fP(7), \fBnamespaces\fP(7), \fBpath_resolution\fP(7),
\fBpid_namespaces\fP(7), \fBpthreads\fP(7), \fBsignal\fP(7), \fBsystem_data_types\fP(7),
\fBunix\fP(7), \fBuser_namespaces\fP(7), \fBsudo\fP(8)
.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 .
