.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 .\" and Copyright (C) 2006, 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified by Michael Haardt .\" Modified 1993-07-21 by Rik Faith .\" Modified 1997-01-12 by Michael Haardt .\" : NFS details .\" Modified 2004-06-23 by Michael Kerrisk .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH CHMOD 2 "15 września 2017 r." Linux "Podręcznik programisty Linuksa" .SH NAZWA chmod, fchmod, fchmodat \- zmiana praw do pliku .SH SKŁADNIA .nf \fB#include \fP .PP \fBint chmod(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP \fBint fchmod(int \fP\fIfd\fP\fB, mode_t \fP\fImode\fP\fB);\fP \fB#include \fP /* Definicja stałych AT_* */ \fB#include \fP .PP \fBint fchmodat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\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 .ad l .PD 0 \fBfchmod\fP(): .RS 4 .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) Od glibc 2.24: _POSIX_C_SOURCE\ >=\ 199309L .PP Glibc 2.19 do 2.23 _POSIX_C_SOURCE .PP Glibc 2.16 do 2.19: _BSD_SOURCE || _POSIX_C_SOURCE .PP Glibc 2.12 do 2.16: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _POSIX_C_SOURCE >= 200809L .PP .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) Glibc 2.11 oraz wcześniejsze: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 .RE .PD .PP \fBfchmodat\fP(): .PD 0 .ad l .RS 4 .TP 4 Od glibc 2.10: _POSIX_C_SOURCE\ >=\ 200809L .TP Przed glibc 2.10: _ATFILE_SOURCE .RE .ad .PD .ad .SH OPIS Wywołania systemowe \fBchmod\fP() oraz \fBfchmod\fP() modyfikują bity trybu pliku. (Tryb pliku składa się z bitów uprawnień do pliku plus set\-user\-ID, set\-group\-ID oraz sticky bitu.) Te wywołania systemowe różnią się tylko sposobem określenia pliku: .IP * 2 \fBchmod\fP() zmienia tryb określonego pliku, którego ścieżka jest podana w \fIpathname\fP, która jest rozwiązana, jeśli jest to link symboliczny. .IP * \fBfchmod\fP() zmienia tryb pliku przypisanego do deskryptora otwartego pliku \fIfd\fP. .PP Tryb nowego pliku jest określony w \fImode\fP, który jest maską bitową stworzoną przez ORing łącznie zero lub więcej następujących: .TP 18 \fBS_ISUID\fP (04000) set\-user\-ID (ustawia efektywny ID użytkownika procesu na \fBexecve\fP(2)) .TP \fBS_ISGID\fP (02000) set\-group\-ID (ustawia efektywny ID grupy na procesie na \fBexecve\fP(2); obowiązkowe blokowanie, jak opisano w \fBfcntl\fP(2); bierze grupę nowego pliku z katalogu nadrzędnego, jak opisano w \fBchown\fP(2) i \fBmkdir\fP(2)) .TP \fBS_ISVTX\fP (01000) bit sticky (flaga ograniczonego usuwania, jak opisano w \fBunlink\fP(2)) .TP \fBS_IRUSR\fP (00400) odczyt przez właściciela .TP \fBS_IWUSR\fP (00200) zapis przez właściciela .TP \fBS_IXUSR\fP (00100) wykonanie/wyszukiwanie przez właściciela ("wyszukiwanie" dotyczy katalogów, oraz oznacza możliwość wejścia do katalogu) .TP \fBS_IRGRP\fP (00040) odczyt przez grupę .TP \fBS_IWGRP\fP (00020) zapis przez grupę .TP \fBS_IXGRP\fP (00010) uruchomianie/przeszukiwanie przez grupę .TP \fBS_IROTH\fP (00004) odczyt przez pozostałych .TP \fBS_IWOTH\fP (00002) zapis przez pozostałych .TP \fBS_IXOTH\fP (00001) uruchomianie/przeszukiwanie przez pozostałych .PP Efektywny UID wywoływanego procesu musi zgadzać się z właścicielem pliku, lub proces musi być uprzywilejowany (Linux: musi mieć funkcjonalność \fBCAP_FOWNER\fP .PP Jeśli wywołany proces nie jest uprzywilejowany (Linux: nie ma funkcjonalności \fBCAP_FSETID\fP), oraz grupa pliku nie zgadza się z efektywnym ID grupy procesu lub jednej z jego dodatkowych ID grupy, \fBS_ISGID\fP zostanie wyłączony, lecz nie spowoduje to zwrócenia błędu. .PP Jako wyznacznik bezpieczeństwa, zależnie od systemu plików, bity SUID i SGID mogą zostać wyłączone podczas zapisywania pliku. (Na Linuxie, zdarza się\ to jeśli zapisujący proces nie ma funkcjonalności \fBCAP_FSETID\fP.) Na niektórych systemach plików, tylko superużytkownik może ustawić bit "sticky", który może mieć specjalne znaczenie. Znaczenie bitów "sticky", SUID i SGID dla katalogów opisano w \fBinode\fP(7). .PP .\" .\" Na systemach plików NFS, ograniczanie praw będzie miało natychmiastowy wpływ na aktualnie otwarte pliki, gdyż kontrola dostępu dokonywana jest na serwerze, a otwarte pliki obsługiwane sa przez klienta. Rozszerzenie uprawnień może zostać udostępnione z opóźnieniem innym klientom, jeśli mają włączone buforowanie atrybutów. .SS fchmodat() Wywołanie systemowe \fBfchmodat\fP() operuje w dokładnie taki sam sposób jak \fBchmod\fP(), z wyjątkiem różnic opisanych tutaj. .PP Jeśli ścieżka podana w \fIścieżka\fP jest względna, wtedy jest ona interpretowana względem katalogu przypisanego przez deskryptor pliku \fIdirfd\fP (zamiast względem obecnego katalogu roboczego wywołanego procesu, tak jak dzieje się to w przypadku \fBchmod\fP() dla względnych ścieżek. .PP Jeśli ścieżka jest względna, a \fIdirdf\fP ma szczególna wartość \fBAT_FDCWD\fP, wtedy \fIścieżka\fP jest interpretowana względnie do obecnego katalogu roboczego wywołanego procesu (jak w \fBchmod\fP()). .PP If ścieżka \fIpathname\fP jest bezwzględna, to \fIdirfd\fP jest ignorowane. .PP \fIflags\fP mogą być 0 lub zawierać następujące flagi: .TP \fBAT_SYMLINK_NOFOLLOW\fP Jeśli \fIpathname\fP jest linkiem symbolicznym, nie rozwiązuje go: w zamian operuje na samym linku. Ta flaga nie jest obecnie zaimplementowana. .PP Potrzeba \fBfchmodat\fP() jest wyjaśniona w \fBopenat\fP(2) .SH "WARTOŚĆ ZWRACANA" Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest \-1 i odpowiednio ustawiane jest \fIerrno\fP. .SH BŁĘDY W zależności od systemu plików, mogą wystąpić błędy nie wymienione poniżej. .PP Powszechniejsze błędy \fBfchmod\fP są następujące: .TP \fBEACCES\fP Brak praw do przeszukiwania dla składowej ścieżki. (Patrz także \fBpath_resolution\fP(7)). .TP \fBEFAULT\fP \fIpathname\fP wskazuje poza dostępną dla użytkownika przestrzeń adresową. .TP \fBEIO\fP Wystąpił błąd wejścia/wyjścia. .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 \fBEPERM\fP Efektywny UID nie odpoiwada właścicielowi pliku, a proces nie jest uprzywilejowany (Linux: nie ma funkcjonalności \fBCAP_FOWNER\fP). .TP \fBEPERM\fP Plik jest oznaczony jako tylko do odczytu lub tylko do nadpisu. (Sprawdź również \fBioctl_iflags\fP(2).) .TP \fBEROFS\fP Podany plik znajduje się na systemie plików przeznaczonym tylko do odczytu. .PP Ogólne błędy \fBfchmod\fP() to: .TP \fBEBADF\fP Deskryptor pliku \fIfd\fP jest nieprawidłowy. .TP \fBEIO\fP Zobacz wyżej. .TP \fBEPERM\fP Zobacz wyżej. .TP \fBEROFS\fP Zobacz wyżej. .PP Błędy, które mogą wystąpić w \fBchmod\fP() mogą również wystąpić w \fBfchmodat\fP(). Następujące dodatkowe błędy mogą wystąpić w \fBfchmodat\fP(). .TP \fBEBADF\fP \fIdirfd\fP nie jest prawidłowym deskryptorem pliku. .TP \fBEINVAL\fP Podano nieprawidłową opcję w \fIflags\fP. .TP \fBENOTDIR\fP \fIpathname\fP jest względna a \fIdirfd\fP jest deskryptorem pliku odnoszącym się do pliku zamiast do katalogu. .TP \fBENOTSUP\fP \fIflags\fP określono na \fBAT_SYMLINK_NOFOLLOW\fP, który nie jest wspierany. .SH WERSJE \fBfchmodat\fP() został dodany do jądra Linuxa w wersji 2.6.16; wsparcie dla biblioteki zostało dodane do glibc w wersji 2.4. .SH "ZGODNE Z" \fBchmod\fP(), \fBfchmod\fP(): 4.4BSD, SVr4, POSIX.1\-2001i, POSIX.1\-2008. .PP \fBfchmodat\fP(): POSIX.1\-2008. .SH UWAGI .SS "Różnice biblioteki C/jądra" Funkcja wrapper \fBfchmodat\fP() z biblioteki GNU C implementuje określony przez POSIX'a interfejs opisany na tej stronie. Ten interfejs różni się od zaszytego w Linuxie wywołania systemowego, które \fInie\fP ma argumentu \fIflags\fP. .SS "Uwagi dla glibc" Na starszych wersjach jądra Linuxa gdzie \fBfchmodat\fP() nie było dostępne, funkcja wrappera z glibc wraca do używania \fBchmod\fP(). Kiedy \fIpathname\fP jest względną ścieżką, glibc konstruuje ścieżkę na bazie linku symbolicznego w \fI/proc/self/fd\fP, który odpowiada argumentowi \fIdirfd\fP. .SH "ZOBACZ TAKŻE" \fBchmod\fP(1), \fBchown\fP(2), \fBexecve\fP(2), \fBopen\fP(2), \fBstat\fP(2), \fBinode\fP(7), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .SH "O STRONIE" Angielska wersja tej strony pochodzi z wydania 5.10 projektu Linux \fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem \%https://www.kernel.org/doc/man\-pages/. .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys i Andrzej Krzysztofowicz . 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. Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres .MT manpages-pl-list@lists.sourceforge.net .ME .