.\" -*- 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 <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified by Michael Haardt <michael@moria.de>
.\" Modified 1993-07-21 by Rik Faith <faith@cs.unc.edu>
.\" Modified 1996-07-09 by Andries Brouwer <aeb@cwi.nl>
.\" Modified 1996-11-06 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 1997-05-18 by Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" 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 "5 lutego 2023 r." "Linux man\-pages 6.03" 
.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 <unistd.h>\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 <fcntl.h>           \fP/* Definicja stałych AT_* */
\fB#include <unistd.h>\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 \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ładowa ś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
\fBfchownat\fP() dodano w Linuksie 2.6.16; obsługa w bibliotece została dodana
w glibc 2.4.
.SH STANDARDY
\fBchown\fP(), \fBfchown\fP(), \fBlchown\fP(): 4.4BSD, SVr4, POSIX.1\-2001,
POSIX.1\-2008.
.PP
.\" 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).
.PP
\fBfchownat\fP(): POSIX.1\-2008.
.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 <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

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 <owner> <file>\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 <pborys@dione.ids.pl>,
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>
i
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 .
