.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2007 by Michael Kerrisk .\" .\" 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\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\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 . .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 .