.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1993 Michael Haardt (michael@cantor.informatik.rwth-aachen.de), .\" Fri Apr 2 11:32:09 MET DST 1993 .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" Modified 1993-07-25 by Rik Faith (faith@cs.unc.edu) .\" Modified 1995-02-26 by Michael Haardt .\" Modified 1996-07-20 by Michael Haardt .\" Modified 1997-07-02 by Nicolás Lichtmaier .\" Modified 2004-10-31 by aeb, following Gwenole Beauchesne .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH utmp 5 "3 maja 2023 r." "Linux man\-pages 6.05.01" .SH NAZWA utmp, wtmp \- zapisy o logowaniu .SH SKŁADNIA .nf \fB#include \fP .fi .SH OPIS Plik \fIutmp\fP umożliwia znalezienie informacji o tym, kto w danej chwili korzysta z systemu. Z systemu może korzystać więcej użytkowników, ponieważ nie wszystkie programy zapisują informacje do pliku \fIutmp\fP. .PP \fBOstrzeżenie:\fP \fIutmp\fP nie może mieć ustawionego prawa do zapisywania dla wszystkich użytkowników, ponieważ wiele programów systemowych (głupio) polega na jego integralności. Istnieje ryzyko sfałszowania logów systemowych i modyfikacji plików systemowych, jeśli \fIutmp\fP będzie modyfikowalny przez użytkowników innych niż właściciel tego pliku i użytkownicy należący do grupy, do której należy właściciel pliku. .PP Plik jest sekwencją wpisów, z których każdy ma postać następującej struktury \fIutmp\fPzdeklarowanej w pliku nagłówkowym \fI\fP (należy zwrócić uwagę, że jest to jedna z wielu definicji; szczegóły zależą od wersji libc): .PP .in +4n .EX /* Values for ut_type field, below */ \& #define EMPTY 0 /* Record does not contain valid info (formerly known as UT_UNKNOWN on Linux) */ #define RUN_LVL 1 /* Change in system run\-level (see \fBinit\fP(1)) */ #define BOOT_TIME 2 /* Time of system boot (in \fIut_tv\fP) */ #define NEW_TIME 3 /* Time after system clock change (in \fIut_tv\fP) */ #define OLD_TIME 4 /* Time before system clock change (in \fIut_tv\fP) */ #define INIT_PROCESS 5 /* Process spawned by \fBinit\fP(1) */ #define LOGIN_PROCESS 6 /* Session leader process for user login */ #define USER_PROCESS 7 /* Normal process */ #define DEAD_PROCESS 8 /* Terminated process */ #define ACCOUNTING 9 /* Not implemented */ \& #define UT_LINESIZE 32 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 \& struct exit_status { /* Type for ut_exit, below */ short e_termination; /* Process termination status */ short e_exit; /* Process exit status */ }; \& struct utmp { short ut_type; /* Type of record */ pid_t ut_pid; /* PID of login process */ char ut_line[UT_LINESIZE]; /* Device name of tty \- "/dev/" */ char ut_id[4]; /* Terminal name suffix, or inittab(5) ID */ char ut_user[UT_NAMESIZE]; /* Username */ char ut_host[UT_HOSTSIZE]; /* Hostname for remote login, or kernel version for run\-level messages */ struct exit_status ut_exit; /* Exit status of a process marked as DEAD_PROCESS; not used by Linux init(1) */ /* The ut_session and ut_tv fields must be the same size when compiled 32\- and 64\-bit. This allows data files and shared memory to be shared between 32\- and 64\-bit applications. */ #if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32 int32_t ut_session; /* Session ID (\fBgetsid\fP(2)), used for windowing */ struct { int32_t tv_sec; /* Seconds */ int32_t tv_usec; /* Microseconds */ } ut_tv; /* Time entry was made */ #else long ut_session; /* Session ID */ struct timeval ut_tv; /* Time entry was made */ #endif \& int32_t ut_addr_v6[4]; /* Internet address of remote host; IPv4 address uses just ut_addr_v6[0] */ char __unused[20]; /* Reserved for future use */ }; \& /* Backward compatibility hacks */ #define ut_name ut_user #ifndef _NO_UT_TIME #define ut_time ut_tv.tv_sec #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6[0] .EE .in .PP This structure gives the name of the special file associated with the user's terminal, the user's login name, and the time of login in the form of \fBtime\fP(2). String fields are terminated by a null byte (\[aq]\e0\[aq]) if they are shorter than the size of the field. .PP Pierwsze wpisy, jakie kiedykolwiek utworzono, pochodzą od \fBinit\fP(1) przetwarzającego \fBinittab\fP(5). Zanim jakikolwiek wpis zostanie utworzony, \fBinit\fP(1) czyści utmp przez wpisanie \fBDEAD_PROCESS\fP do \fIut_type\fP, wypełniając \fIut_user\fP, \fIut_host\fP i \fIut_time\fP bajtami NULL we wszystkich rekordach, w których \fIut_type\fP nie jest ustawione na \fBDEAD_PROCESS\fP lub \fBRUN_LVL\fP i dla których nie istnieje proces o PID równym \fIut_pid\fP. Jeśli nie znajdzie się żaden pusty rekord z wymaganym \fIut_id\fP, \fBinit\fP(1) tworzy nowy. Wpisuje do niego \fIut_id\fP z inittab, \fIut_pid\fP i \fIut_time\fP nadaje bieżące wartości, a \fIut_type\fP nadaje wartość \fBINIT_PROCESS\fP. .PP \fBmingetty\fP(8) (lub \fBagetty\fP(8)) lokalizuje wpis po numerze PID, zmienia \fIut_type\fP na \fBLOGIN_PROCESS\fP, zmienia \fIut_time\fP, ustawia \fIut_line\fP i czeka na zestawienie połączenia. Po autentykacji użytkownika, \fBlogin\fP(1) zmienia \fIut_type\fP na \fBUSER_PROCESS\fP, zmienia \fIut_time\fP i nadaje wartości \fIut_host\fP i \fIut_addr\fP. Zależnie od wersji \fBmingetty\fP(8) (lub \fBagetty\fP(8)) i \fBlogin\fP(8), rekordy mogą być wyszukiwane na podstawie \fIut_line\fP zamiast preferowanego \fIut_pid\fP. .PP When \fBinit\fP(1) finds that a process has exited, it locates its utmp entry by \fIut_pid\fP, sets \fIut_type\fP to \fBDEAD_PROCESS\fP, and clears \fIut_user\fP, \fIut_host\fP, and \fIut_time\fP with null bytes. .PP \fBxterm\fP(1) and other terminal emulators directly create a \fBUSER_PROCESS\fP record and generate the \fIut_id\fP by using the string that suffix part of the terminal name (the characters following \fI/dev/\fP[pt]\fIty\fP). If they find a \fBDEAD_PROCESS\fP for this ID, they recycle it, otherwise they create a new entry. If they can, they will mark it as \fBDEAD_PROCESS\fP on exiting and it is advised that they null \fIut_line\fP, \fIut_time\fP, \fIut_user\fP, and \fIut_host\fP as well. .PP \fBtelnetd\fP(8) ustawia wpis \fBLOGIN_PROCESS\fP i zostawia resztę programowi \fBlogin\fP(1). Po zakończeniu sesji telnetu, \fBtelnetd\fP(8) czyści utmp w opisany sposób. .PP The \fIwtmp\fP file records all logins and logouts. Its format is exactly like \fIutmp\fP except that a null username indicates a logout on the associated terminal. Furthermore, the terminal name \fB\[ti]\fP with username \fBshutdown\fP or \fBreboot\fP indicates a system shutdown or reboot and the pair of terminal names \fB|\fP/\fB}\fP logs the old/new system time when \fBdate\fP(1) changes it. \fIwtmp\fP is maintained by \fBlogin\fP(1), \fBinit\fP(1), and some versions of \fBgetty\fP(8) (e.g., \fBmingetty\fP(8) or \fBagetty\fP(8)). None of these programs creates the file, so if it is removed, record\-keeping is turned off. .SH PLIKI \fI/var/run/utmp\fP .br \fI/var/log/wtmp\fP .SH WERSJE POSIX.1 does not specify a \fIutmp\fP structure, but rather one named \fIutmpx\fP (as part of the XSI extension), with specifications for the fields \fIut_type\fP, \fIut_pid\fP, \fIut_line\fP, \fIut_id\fP, \fIut_user\fP, and \fIut_tv\fP. POSIX.1 does not specify the lengths of the \fIut_line\fP and \fIut_user\fP fields. .PP Pod Linuksem struktura \fIutmpx\fP jest zdefiniowana tak samo jak struktura \fIutmp\fP. .SH STANDARDY Linux. .SH HISTORIA Wpisy utmp Linuksa nie są zgodne ani z v7/BSD ani z Systemem V, ale są mieszaniną tych dwóch. .PP v7/BSD zawiera mniej pól; najważniejszym problemem jest brak \fIut_type\fP, który powoduje że natywne programy v7/BSD wyświetlają (na przykład) wpisy \fBDEAD_PROCESS\fP lub \fBLOGIN_PROCESS\fP. Co więcej, nie ma pliku konfiguracyjnego, który przydziela rekordy sesjom. BSD tak robi z powodu braku pola \fIut_id\fP. .PP W Linuksie (tak jak w Systemie V), pole \fIut_id\fP rekordu nigdy nie ulega zmianie, kiedy raz zostanie mu nadana wartość, co rezerwuje ten rekord bez potrzeby pliku konfiguracyjnego. Czyszczenie \fIut_id\fP może prowadzić do sytuacji wyścigu, których skutkiem będą uszkodzone wpisy w utmp i potencjalne dziury w bezpieczeństwie. Czyszczenie wymienionych wyżej pól przez wypełnianie ich bajtami NULL nie jest wymagane przy semantyce Systemu V, lecz pozwala na uruchamianie wielu programów, które zakładają semantykę BSD, a nie modyfikują utmp. Linux używa konwencji BSD dla zawartości pola line, jak opisano wyżej. .PP .\" mtk: What is the referrent of "them" in the following sentence? .\" System V only uses the type field to mark them and logs .\" informative messages such as \fB"new time"\fP in the line field. System V nie ma pól \fIut_host\fP ani \fIut_addr_v6\fP. .SH UWAGI W przeciwieństwie do wielu innych systemów, gdzie utmp można wyłączyć przez usunięcie tego pliku, w Linuksie utmp zawsze musi istnieć. W celu wyłączenia \fBwho\fP(1) należy jedynie uniemożliwić odczyt utmp dla całego świata. .PP Format pliku jest zależny od maszyny, więc jest zalecane, by plik był przetwarzany tylko na maszynie, na której został utworzony. .PP Proszę zauważyć, że na platformach, które mogą uruchamiać zarówno 32\-bitowe, jaki 64\-bitowe aplikacje (x86\-64, ppc64, s390x itd.), rozmiar pola \fIut_tv\fP musi być taki sam w trybie 32\-bitowym, co w 64\-bitowym. Podobnie jest z polami \fIut_session\fP i \fIut_time\fP, jeśli są obecne. Pozwala to na dzielenie plików danych i pamięci współdzielonej pomiędzy aplikacjami 32\- i 64\-bitowymi. Osiągnięto to zmieniając typ \fIut_session\fP na \fIint32_t\fP, a typ \fIut_tv\fP na strukturę zawierającą dwa pola o typie \fIint32_t\fP: \fItv_sec\fP and \fItv_usec\fP. Ponieważ \fIut_tv\fP może nie być takie samo jak \fIstruct timeval\fP, to zamiast wywoływania: .PP .in +4n .EX gettimeofday((struct timeval *) &ut.ut_tv, NULL); .EE .in .PP zaleca się używanie poniższej metody do ustawiania wartości w tym polu: .PP .in +4n .EX struct utmp ut; struct timeval tv; \& gettimeofday(&tv, NULL); ut.ut_tv.tv_sec = tv.tv_sec; ut.ut_tv.tv_usec = tv.tv_usec; .EE .in .\" .PP .\" Note that the \fIutmp\fP struct from libc5 has changed in libc6. .\" Because of this, .\" binaries using the old libc5 struct will corrupt .\" .IR /var/run/utmp " and/or " /var/log/wtmp . .\" .SH BUGS .\" This man page is based on the libc5 one, things may work differently now. .SH "ZOBACZ TAKŻE" \fBac\fP(1), \fBdate\fP(1), \fBinit\fP(1), \fBlast\fP(1), \fBlogin\fP(1), \fBlogname\fP(1), \fBlslogins\fP(1), \fBusers\fP(1), \fButmpdump\fP(1), \fBwho\fP(1), \fBgetutent\fP(3), \fBgetutmp\fP(3), \fBlogin\fP(3), \fBlogout\fP(3), \fBlogwtmp\fP(3), \fBupdwtmp\fP(3) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys , Robert Luberda i 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 .