.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 .\" and Copyright (c) 1998 Andries Brouwer (aeb@cwi.nl) .\" and Copyright (c) 2006, 2007, 2008, 2014 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified by Michael Haardt .\" Modified 1993-07-21 by Rik Faith .\" Modified 1996-07-09 by Andries Brouwer .\" Modified 1996-11-06 by Eric S. Raymond .\" Modified 1997-05-18 by Michael Haardt .\" Modified 2004-06-23 by Michael Kerrisk .\" 2007-07-08, mtk, added an example program; updated SYNOPSIS .\" 2008-05-08, mtk, Describe rules governing ownership of new files .\" (bsdgroups versus sysvgroups, and the effect of the parent .\" directory's set-group-ID mode bit). .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH chown 2 "3 maja 2023 r." "Linux man\-pages 6.05.01" .SH NAZWA chown, fchown, lchown, fchownat \- zmieniają właściciela pliku .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .PP \fBint chown(const char *\fP\fIpathname\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP \fBint fchown(int \fP\fIfd\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP \fBint lchown(const char *\fP\fIpathname\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP .PP \fB#include \fP/* Definicja stałych AT_* */ \fB#include \fP .PP \fBint fchownat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB,\fP \fB uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .PP .RS -4 Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .RE .PP \fBfchown\fP(), \fBlchown\fP(): .nf .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED /* Od glibc 2.12: */ _POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 500 || /* glibc <= 2.19: */ _BSD_SOURCE .fi .PP \fBfchownat\fP(): .nf Od glibc 2.10: _POSIX_C_SOURCE >= 200809L Przed glibc 2.10: _ATFILE_SOURCE .fi .SH OPIS Niniejsze wywołania systemowe zmieniają właściciela i grupę pliku. Wywołania systemowe \fBchown\fP(), \fBfchown\fP() i \fBlchown\fP() różnią się jedynie sposobem określenia pliku: .IP \[bu] 3 \fBchown\fP() zmienia właściciela pliku określonego ścieżką \fIpathname\fP, która jest rozwiązywana, jeśli jest dowiązaniem symbolicznym. .IP \[bu] \fBfchown\fP() zmienia właściciela pliku określonego deskryptorem otwartego pliku \fIfd\fP. .IP \[bu] \fBlchown\fP() jest podobne do \fBchown\fP(), lecz nie podąża za dowiązaniami symbolicznymi. .PP Zmiany właściciela pliku może dokonać jedynie proces uprzywilejowany (Linux: z przywilejem (ang. capability) \fBCAP_CHOWN\fP). Właściciel pliku może zmienić grupę pliku na dowolną grupę, której jest członkiem. Proces uprzywilejowany (Linux: z przywilejem \fBCAP_CHOWN\fP) może zmienić grupę w sposób dowolny. .PP Jeśli \fIowner\fP lub \fIgroup\fP jest podane jako \-1, to ten identyfikator nie jest wtedy zmieniany. .PP .\" In Linux 2.0 kernels, superuser was like everyone else .\" In Linux 2.2, up to Linux 2.2.12, these bits were not cleared for superuser. .\" Since Linux 2.2.13, superuser is once more like everyone else. Jeśli właściciel lub grupa pliku wykonywalnego są zmieniane przez użytkownika nieuprzywilejowanego, to bity trybu \fBS_ISUID\fP i \fBS_ISGID\fP są usuwane. Standard POSIX nie precyzuje, czy powinno to nastąpić również przy wykonaniu przez roota \fBchown\fP(); zachowanie w Linuksie zależy od wersji jądra, od Linuksa 2.2.13, root jest traktowany tak samo jak inni użytkownicy. W przypadku pliku, który nie jest wykonywalny dla grupy (tj. którego bit \fBS_IXGRP\fP nie jest ustawiony), bit \fBS_ISGID\fP oznacza obowiązkowe blokowanie pliku i wówczas nie jest usuwany przez \fIchown\fP. .PP .\" Jeśli właściciel lub grupa pliku wykonywalnego zostanie zmieniona (przez dowolnego użytkownika), wszystkie zbiory przywilejów pliku zostaną usunięte. .SS fchownat() Wywołanie systemowe \fBfchownat\fP() operuje w dokładnie taki sam sposób jak \fBchown\fP(), z wyjątkiem różnic opisanych tutaj. .PP Jeśli ścieżka podana w \fIpathname\fP jest względna, jest to interpretowane w odniesieniu do katalogu do którego odnosi się deskryptor pliku \fIdirfd\fP (zamiast w odniesieniu do bieżącego katalogu roboczego procesu wywołującego, jak w stosunku do ścieżek względnych robi to \fBchown\fP()). .PP Jeśli \fIpathname\fP jest względna a \fIdirfd\fP ma wartość specjalną \fBAT_FDCWD\fP, to \fIpathname\fP jest interpretowana w odniesieniu do bieżącego katalogu roboczego procesu wywołującego (jak \fBchown\fP()). .PP Jeśli ścieżka \fIpathname\fP jest bezwzględna, to \fIdirfd\fP jest ignorowane. .PP Parametr \fIflags\fP jest maską bitową, utworzoną jako suma logiczna (OR) zera lub więcej następujących wartości; .TP \fBAT_EMPTY_PATH\fP (od Linuksa 2.6.39) .\" commit 65cfc6722361570bfe255698d9cd4dccaf47570d .\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed Jeśli \fIpathname\fP jest pustym łańcuchem, działa na pliku do którego odnosi się \fIdirfd\fP (który mógł być pozyskany za pomocą znacznika \fBO_PATH\fP \fBopen\fP(2)). W tym przypadku \fIdirfd\fP może odnosić się do dowolnego typu pliku, a nie tylko katalogu. Jeśli \fIdirfd\fP wynosi \fBAT_FDCWD\fP, to wywołanie działa na bieżącym katalogu roboczym. Znacznik ten jest charakterystyczny dla Linuksa; należy zdefiniować \fB_GNU_SOURCE\fP, aby pozyskać jego definicję. .TP \fBAT_SYMLINK_NOFOLLOW\fP Jeśli \fIpathname\fP jest dowiązaniem symbolicznym, nie podąża za nim, w zamian działa na samym dowiązaniu, jak \fBlchown\fP(). Domyślnie \fBfchownat\fP() podąża za dowiązaniami symbolicznymi, jak \fBchown\fP(). .PP Więcej informacji o potrzebie wprowadzenia \fBfchownat\fP() można znaleźć w podręczniku \fBopenat\fP(2). .SH "WARTOŚĆ ZWRACANA" Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest \-1 i ustawiane jest \fIerrno\fP wskazując błąd. .SH BŁĘDY W zależności od systemu plików, mogą wystąpić błędy niewymienione poniżej. .PP Ogólne błędy \fBchown\fP() to: .TP \fBEACCES\fP Brak praw do przeszukiwania dla składowej ścieżki (zob. także \fBpath_resolution\fP(7)). .TP \fBEBADF\fP (\fBfchown\fP()) \fIfd\fP nie jest prawidłowym otwartym deskryptorem pliku. .TP \fBEBADF\fP (\fBfchownat\fP()) \fIpathname\fP jest względne, lecz \fIdirfd\fP nie wynosi ani \fBAT_FDCWD\fP, ani nie jest prawidłowym deskryptorem pliku. .TP \fBEFAULT\fP \fIpathname\fP wskazuje poza dostępną dla użytkownika przestrzeń adresową. .TP \fBEINVAL\fP (\fBfchownat\fP()) Podano nieprawidłową opcję w \fIflags\fP. .TP \fBEIO\fP (\fBfchown\fP()) Niskopoziomowy błąd wejścia/wyjścia podczas modyfikacji i\-węzła. .TP \fBELOOP\fP Podczas rozwiązywania \fIpathname\fP napotkano zbyt wiele dowiązań symbolicznych. .TP \fBENAMETOOLONG\fP Ścieżka \fIpathname\fP jest zbyt długa. .TP \fBENOENT\fP Plik nie istnieje. .TP \fBENOMEM\fP Brak pamięci jądra. .TP \fBENOTDIR\fP Składnik ścieżki nie jest katalogiem. .TP \fBENOTDIR\fP (\fBfchownat\fP()) \fIpathname\fP jest względna a \fIdirfd\fP jest deskryptorem pliku odnoszącym się do pliku zamiast do katalogu. .TP \fBEPERM\fP Wywołujący proces nie ma wymaganych uprawnień (zob. wyżej) do zmiany właściciela i/lub grupy. .TP \fBEPERM\fP Plik jest oznaczony jako tylko do odczytu lub tylko do nadpisu (zob. również \fBioctl_iflags\fP(2)). .TP \fBEROFS\fP Podany plik znajduje się na systemie plików przeznaczonym tylko do odczytu. .SH WERSJE .\" chown(): .\" SVr4 documents EINVAL, EINTR, ENOLINK and EMULTIHOP returns, but no .\" ENOMEM. POSIX.1 does not document ENOMEM or ELOOP error conditions. .\" fchown(): .\" SVr4 documents additional EINVAL, EIO, EINTR, and ENOLINK .\" error conditions. Wersja 4.4BSD może być użyta jedynie przez superużytkownika (tj. zwykły użytkownik nie może oddawać plików). .SH STANDARDY POSIX.1\-2008. .SH HISTORIA .TP \fBchown\fP() .TQ \fBfchown\fP() .TQ \fBlchown\fP() 4.4BSD, SVr4, POSIX.1\-2001. .TP \fBfchownat\fP() POSIX.1\-2008. Linux 2.6.16, glibc 2.4. .SH UWAGI .SS "Własność nowych plików" Przy tworzeniu nowego pliku (przez np. \fBopen\fP(2) lub \fBmkdir\fP(2)), jego właścicielem staje się identyfikator użytkownika systemu plików tworzącego procesu. Grupa zależy od wielu czynników, w tym typu systemu plików, opcji użytych przy jego zamontowaniu oraz tego, czy dla jego katalogu ustawiono bit ustawienia ID grupy podczas wykonania (sgid). Jeśli system plików obsługuje opcje montowania \fBmount\fP(8): \fB\-o\ grpid\fP (lub równoważnie \fB\-o\ bsdgroups\fP) i \fB\-o\ nogrpid\fP (lub równoważnie \fB\-o\ sysvgroups\fP), to zasady są następujące: .IP \[bu] 3 Jeśli system plików zamontowano z opcją \fB\-o\ grpid\fP, to grupa nowego pliku jest taka sama jak grupa jego katalogu. .IP \[bu] Jeśli system plików zamontowano z opcją \fB\-o\ nogrpid\fP i bit ustawienia ID grupy podczas wykonania (sgid) jest wyłączony dla jego katalogu, to grupa nowego pliku jest taka sama jak grupa systemu plików dla procesu go tworzącego. .IP \[bu] Jeśli system plików zamontowano z opcją \fB\-o\ nogrpid\fP i bit ustawienia ID grupy podczas wykonania (sgid) jest ustawiony dla jego katalogu, to grupa nowego pliku jest taka sama jak grupa jego katalogu. .PP Z aktualnością na jądro Linux 4.12, opcje montowania \fB\-o\ grpid\fP i \fB\-o\ nogrpid\fP są obsługiwane przez systemy plików ext2, ext3, ext4 i XFS. Systemy plików nieobsługujące tych opcji, przestrzegają reguł \fB\-o\ nogrpid\fP. .SS "Uwagi dla glibc" Na starszych wersjach jądra Linux, gdzie \fBfchownat\fP() nie jest dostępne, funkcja opakowująca z glibc wraca do używania \fBchown\fP() i \fBlchown\fP(). Gdy \fIpathname\fP jest względną ścieżką, glibc konstruuje ścieżkę na bazie dowiązania symbolicznego w \fI/proc/self/fd\fP, które odpowiada argumentowi \fIdirfd\fP. .SS NFS Semantyka \fBchown\fP() jest pogwałcona na systemach plików NFS, z włączonym mapowaniem UID. Dodatkowo, semantyka wszystkich wywołań systemowych, które uzyskują dostęp do zawartości plików jest dla NFS pogwałcona, bo \fBchown\fP() może spowodować natychmiastowe unieważnienie dostępu do już otwartych plików. Buforowanie po stronie klienta może spowodować opóźnienie możliwości uzyskania dostępu do pliku przez użytkowników innych stacji klienckich w stosunku do chwili dokonania zmiany właściciela umożliwiającej ten dostęp. .SS "Detale historyczne" Oryginalne linuksowe wywołania systemowe \fBchown\fP(), \fBfchown\fP() i \fBlchown\fP() obsługiwały tylko 16\-bitowe identyfikatory użytkownika i grupy. Następnie w Linuksie 2.4 dodano \fBchown32\fP(), \fBfchown32\fP() i \fBlchown32\fP(), obsługujące 32\-bitowe identyfikatory. Funkcje opakowujące \fBchown\fP(), \fBfchown\fP() i \fBlchown\fP() z glibc obsługują te warianty wywołań w różnych wersjach jądra w sposób przezroczysty dla użytkownika. .PP Przed Linuksem 2.1.81 (z wyjątkiem 2.1.46) \fBchown\fP() nie podąża za dowiązaniami symbolicznymi. Od wersji 2.1.81 Linuksa \fBchown\fP() podąża za dowiązaniami symbolicznymi, została także dodana nowa funkcja systemowa \fBlchown\fP(), która nie podąża za dowiązaniami symbolicznymi. Od wersji 2.1.86 Linuksa, ta nowa funkcja (mająca taką samą semantykę jak stare \fBchown\fP() ma taki sam numer funkcji, a \fBchown\fP() otrzymała nowy numer. .SH PRZYKŁADY Poniższy program zmienia właściciela pliku nazwanego w drugim argumencie wiersza poleceń na wartość podaną w pierwszych argumencie wiersza poleceń. Nowego właściciela pliku można podać albo za pomocą jego numerycznego identyfikatora użytkownika, albo jako nazwę użytkownika (konwertowaną do identyfikatora za pomocą \fBgetpwnam\fP(3), aby wykonać zapytanie w systemowym pliku haseł). .SS "Kod źródłowy programu" .\" SRC BEGIN (chown.c) .EX #include #include #include #include \& int main(int argc, char *argv[]) { char *endptr; uid_t uid; struct passwd *pwd; \& if (argc != 3 || argv[1][0] == \[aq]\e0\[aq]) { fprintf(stderr, "%s \en", argv[0]); exit(EXIT_FAILURE); } \& uid = strtol(argv[1], &endptr, 10); /* Akceptuje łańcuch numeryczny */ \& if (*endptr != \[aq]\e0\[aq]) { /* Nie był to łańcuch czysto numer. */ pwd = getpwnam(argv[1]); /* Próba uzyskania UID dla nazwy użytk. */ if (pwd == NULL) { perror("getpwnam"); exit(EXIT_FAILURE); } \& uid = pwd\->pw_uid; } \& if (chown(argv[2], uid, \-1) == \-1) { perror("chown"); exit(EXIT_FAILURE); } \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "ZOBACZ TAKŻE" \fBchgrp\fP(1), \fBchown\fP(1), \fBchmod\fP(2), \fBflock\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys , Andrzej Krzysztofowicz 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 .