noble (2) chmod.2.gz

Provided by: manpages-pl-dev_4.21.0-2_all bug

NAZWA

       chmod, fchmod, fchmodat - zmiana praw do pliku

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <sys/stat.h>

       int chmod(const char *pathname, mode_t mode);
       int fchmod(int fd, mode_t mode);

       #include <fcntl.h>           /* Definicja stałych AT_* */
       #include <sys/stat.h>

       int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       fchmod():
           Since glibc 2.24:
               _POSIX_C_SOURCE >= 199309L
           glibc 2.19 to glibc 2.23
               _POSIX_C_SOURCE
           glibc 2.16 to glibc 2.19:
               _BSD_SOURCE || _POSIX_C_SOURCE
           glibc 2.12 to glibc 2.16:
               _BSD_SOURCE || _XOPEN_SOURCE >= 500
                   || _POSIX_C_SOURCE >= 200809L
           glibc 2.11 and earlier:
               _BSD_SOURCE || _XOPEN_SOURCE >= 500

       fchmodat():
           Od glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Przed glibc 2.10:
               _ATFILE_SOURCE

OPIS

       The  chmod()   and fchmod()  system calls change a file's mode bits.  (The file mode consists of the file
       permission bits plus the set-user-ID, set-group-ID, and sticky bits.)  These system calls differ only  in
       how the file is specified:

       •  chmod() zmienia tryb określonego pliku, którego ścieżka jest podana w pathname, która jest rozwiązana,
          jeśli jest to link symboliczny.

       •  fchmod() zmienia tryb pliku przypisanego do deskryptora otwartego pliku fd.

       Tryb nowego pliku jest określony w mode, który jest maską bitową stworzoną przez ORing łącznie  zero  lub
       więcej następujących:

       S_ISUID  (04000)  set-user-ID (ustawia efektywny ID użytkownika procesu na execve(2))

       S_ISGID  (02000)  set-group-ID  (ustawia  efektywny  ID  grupy  na  procesie  na  execve(2);  obowiązkowe
                         blokowanie, jak opisano w fcntl(2); bierze grupę nowego pliku z  katalogu  nadrzędnego,
                         jak opisano w chown(2) i mkdir(2))

       S_ISVTX  (01000)  bit sticky (flaga ograniczonego usuwania, jak opisano w unlink(2))

       S_IRUSR  (00400)  odczyt przez właściciela

       S_IWUSR  (00200)  zapis przez właściciela

       S_IXUSR  (00100)  wykonanie/wyszukiwanie   przez  właściciela  ("wyszukiwanie"  dotyczy  katalogów,  oraz
                         oznacza możliwość wejścia do katalogu)

       S_IRGRP  (00040)  odczyt przez grupę

       S_IWGRP  (00020)  zapis przez grupę

       S_IXGRP  (00010)  uruchomianie/przeszukiwanie przez grupę

       S_IROTH  (00004)  odczyt przez pozostałych

       S_IWOTH  (00002)  zapis przez pozostałych

       S_IXOTH  (00001)  uruchomianie/przeszukiwanie przez pozostałych

       Efektywny UID  wywoływanego  procesu  musi  zgadzać  się  z  właścicielem  pliku,  lub  proces  musi  być
       uprzywilejowany (Linux: musi mieć funkcjonalność CAP_FOWNER

       Jeśli  wywołany  proces  nie  jest uprzywilejowany (Linux: nie ma funkcjonalności CAP_FSETID), oraz grupa
       pliku nie zgadza się z efektywnym ID grupy procesu lub  jednej  z  jego  dodatkowych  ID  grupy,  S_ISGID
       zostanie wyłączony, lecz nie spowoduje to zwrócenia błędu.

       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
       CAP_FSETID.)  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 inode(7).

       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.

   fchmodat()
       Wywołanie  systemowe  fchmodat()  operuje  w  dokładnie  taki  sam sposób jak chmod(), z wyjątkiem różnic
       opisanych tutaj.

       Jeśli  ścieżka  podana  w  ścieżka  jest  względna,  wtedy  jest  ona  interpretowana  względem  katalogu
       przypisanego  przez  deskryptor  pliku  dirfd  (zamiast  względem  obecnego katalogu roboczego wywołanego
       procesu, tak jak dzieje się to w przypadku chmod() dla względnych ścieżek.

       Jeśli ścieżka jest względna, a dirdf ma szczególna wartość AT_FDCWD, wtedy  ścieżka  jest  interpretowana
       względnie do obecnego katalogu roboczego wywołanego procesu (jak w chmod()).

       If ścieżka pathname jest bezwzględna, to dirfd jest ignorowane.

       flags mogą być 0 lub zawierać następujące flagi:

       AT_SYMLINK_NOFOLLOW
              Jeśli  pathname  jest linkiem symbolicznym, nie rozwiązuje go: w zamian operuje na samym linku. Ta
              flaga nie jest obecnie zaimplementowana.

       Potrzeba fchmodat() jest wyjaśniona w openat(2)

WARTOŚĆ ZWRACANA

       Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i ustawiane jest errno wskazując
       błąd.

BŁĘDY

       W zależności od systemu plików, mogą wystąpić błędy nie wymienione poniżej.

       Powszechniejsze błędy fchmod są następujące:

       EACCES Brak praw do przeszukiwania dla składowej ścieżki. (Patrz także path_resolution(7)).

       EBADF  (fchmod())  The file descriptor fd is not valid.

       EBADF  (fchmodat())  pathname is relative but dirfd is neither AT_FDCWD nor a valid file descriptor.

       EFAULT pathname wskazuje poza dostępną dla użytkownika przestrzeń adresową.

       EINVAL (fchmodat())  Invalid flag specified in flags.

       EIO    Wystąpił błąd wejścia/wyjścia.

       ELOOP  Podczas rozwiązywania pathname napotkano zbyt wiele dowiązań symbolicznych.

       ENAMETOOLONG
              Ścieżka pathname jest zbyt długa.

       ENOENT Plik nie istnieje.

       ENOMEM Brak pamięci jądra.

       ENOTDIR
              Składnik ścieżki nie jest katalogiem.

       ENOTDIR
              (fchmodat())  pathname is relative and dirfd is a file descriptor referring to a file other than a
              directory.

       ENOTSUP
              (fchmodat())  flags specified AT_SYMLINK_NOFOLLOW, which is not supported.

       EPERM  Efektywny UID nie odpoiwada właścicielowi pliku, a proces nie jest uprzywilejowany (Linux: nie  ma
              funkcjonalności CAP_FOWNER).

       EPERM  Plik jest oznaczony jako tylko do odczytu lub tylko do nadpisu. (Sprawdź również ioctl_iflags(2).)

       EROFS  Podany plik znajduje się na systemie plików przeznaczonym tylko do odczytu.

WERSJE

       fchmodat()  was added in Linux 2.6.16; library support was added in glibc 2.4.

STANDARDY

       chmod(), fchmod(): 4.4BSD, SVr4, POSIX.1-2001i, POSIX.1-2008.

       fchmodat(): POSIX.1-2008.

UWAGI

   Różnice biblioteki C/jądra
       Funkcja  wrapper  fchmodat() 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 nie ma argumentu
       flags.

   Uwagi dla glibc
       Na  starszych wersjach jądra Linuxa gdzie fchmodat() nie było dostępne, funkcja wrappera z glibc wraca do
       używania chmod(). Kiedy  pathname  jest  względną  ścieżką,  glibc  konstruuje  ścieżkę  na  bazie  linku
       symbolicznego w /proc/self/fd, który odpowiada argumentowi dirfd.

ZOBACZ TAKŻE

       chmod(1), chown(2), execve(2), open(2), stat(2), inode(7), path_resolution(7), symlink(7)

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl> i
       Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając  się  z  GNU General Public License w wersji 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ lub
       nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  ⟨manpages-pl-
       list@lists.sourceforge.net⟩.