Scroll to navigation

CHMOD(2) Linux Programmeurs Handleiding CHMOD(2)

NAAM

chmod, fchmod, fchmodat - verander toestemmingen van een bestand

SAMENVATTING

#include <sys/stat.h>
int chmod(const char *padnaam, mode_t toestand);
int fchmod(int bes_ind, mode_t toestand);
#include <fcntl.h>           /* Definitie van AT_* constanten */
#include <sys/stat.h>
int fchmodat(int map_bi, const char *padnaam, mode_t toestand, int vlaggen);

Test Macro´s in glibc (zie feature_test_macros(7)):

fchmod():

Sinds glibc 2.24:
_POSIX_C_SOURCE >= 199309L

Glibc 2.19 t/m 2.23
_POSIX_C_SOURCE

Glibc 2.16 t/m 2.19:
_BSD_SOURCE || _POSIX_C_SOURCE

Glibc 2.12 t/m 2.16:
_BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
_POSIX_C_SOURCE >= 200809L

Glibc 2.11 en ouder:
_BSD_SOURCE || _XOPEN_SOURCE >= 500

fchmodat():

_POSIX_C_SOURCE >= 200809L
_ATFILE_SOURCE

BESCHRIJVING

De chmod() en fchmod() systeem aanroepen veranderen de bestandsmodus bits. (Een bestandsmodus bestaat uit de bestandsrechten bits plus de set-user-ID, set-group-ID en de plak bits.) Deze systeem aanroepen verschillen alleen in de specificatie van het bestand.

  • chmod() verandert de modus van het bestand waarvan de padnaam werd opgegeven in padnaam, ontdaan van de referentie in het geval dit een symbolische koppeling is.
  • fchmod() verandert de modus van het bestand verwezen naar de open bestandsindicator fd.

De nieuwe bestandsmodus is gespecificeerd in mode, welk een bit masker is aangemaakt door het OFen van nul of meer van de volgende:

set-user-ID (zet het effectieve gebruiker ID op execve(2)).
set-group-ID (zet effectieve groep ID van het proces op execve(2); verplicht locking, zoals beschreven in fcntl(2); gebruikt de nieuwe groep van het bestand uit de ouder map, zoals beschreven in chown(2) en mkdir(2))
plak bit (beperkte wis vlag, zoals beschreven in unlink(2))
lezen door eigenaar
schrijven door eigenaar
voer-uit/zoek door eigenaar ("zoek" is toepasbaar op mappen, dit betekent dat ingangen in een map toegankelijk zijn)
lees door groep
schrijf door groep
voer-uit/zoek door groep
lezen door anderen
schrijven door anderen
uitvoeren/zoeken door anderen

Het effectieve UID van het proces moet overeenkomen met de eigenaar van het bestand, of het proces moet geprivilegieerd zijn (Linux: het moet de CAP_FOWNER capaciteit hebben).

Als het aanroepende proces niet gerechtigd is (Linux: heeft niet de CAP_FSETID capaciteit). en de groep van het bestand komt niet overeen met de effectieve groep ID van het proces of een van de aanvullende groep ID´s, dan zal het S_ISGID bit uitgezet worden, echter wordt geen fout teruggegeven.

Als veiligheid maatregel, afhankelijk van het bestandssysteem worden de set-user-ID en set-group-ID uitvoering bits uitgezet als het bestand geschreven wordt. (Op Linuxkomt dit voor als het schrijvende proces de CAP_FSETID capaciteit niet heeft.) Op sommige bestandssystemen kan alleen de systeembeheerder het plak-bit zetten, dat een speciale betekenis kan hebben. Zie, oor het plak-bit, en voor de set-user-ID en set-group-ID bits op mappen, inode(7).

Op NFS bestandsystemen zal het beperken van de toestemmingen onmiddellijk de al open bestanden beïnvloeden, omdat toegangs-controle wordt gedaan door de server, maar de geopende bestanden worden onderhouden door de cliënt. Het verruimen van de toestemmingen kan later doordringen tot andere cliënten als het kenmerken bufferen bij hen aan status.

fchmodat()

De fchmodat()() systeem aanroep werkt op exact dezelfde manier als chmod() behalve voor de hier beschreven verschillen.

Als de padnaam in padnaam relatief is, dan wordt deze geïnterpreteerd relatief aan de map aangewezen door de bestand indicator dirfd (liever dan relatief aan de huidige werkmap van het aanroepende proces, zoals gedaan door chmod() voor een relatieve padnaam).

Als padnaam relatief is en dirfd heeft de speciale waarde AT_FDCWD, dan wordt padnaam geïnterpreteerd relatief aan de huidige werkmap van het aanroepende proces (zoals chmod()).

Als padnaam absoluut is, dan wordt mapbi genegeerd.

vlaggen kan ofwel - zijn, of mag de volgende vlag bevatten:

Als padnaam een symbolische koppeling is, verwijs er dan niet naar, maar behandel de koppeling zelf. Deze vlag is momenteel niet geïmplementeerd.

Zie openat(2) voor een uitleg over de noodzaak van fchmodat().

EIND WAARDE

Bij succes wordt nul teruggegeven. Bij falen wordt -1 teruggegeven en wordt errno overeenkomstig gezet.

FOUTEN

Afhankelijk van het bestandsysteem kunnen andere fouten teruggegeven worden.

De meer algemene fouten van chmod() worden hieronder genoemd.

Zoek toestemming werd geweigerd op een deel van het pad-voorvoegsel. (Zie ook path_resolution(7).)
padnaam wijst buiten de voor u toegankelijke adresruimte.
Een Invoer/Uitvoer fout trad op.
Teveel symbolische koppelingen werden tegengekomen bij het vaststellen van padnaam.
padnaam is te lang.
Het bestand bestaat niet.
Onvoldoende kernelgeheugen voorhanden.
Een deel van het pad-voorvoegsel is geen map.
Het effectieve UID komt niet overeen met de eigenaar van het bestand en het proces is niet geprivilegieerd (Linux: het heeft niet de CAP_FOWNER capaciteit).
Het bestand is gemarkeerd als onveranderlijk of alleen-toevoegen. (Zie ioctl_iflags(2).)
Het benoemde bestand verblijft op een alleen-lezen bestandsysteem.

De algemene fouten voor fchmod() staan hieronder:

De bestandindicator bes_ind is ongeldig.
Zie boven.
Zie boven.
Zie boven.

Dezelfde fouten die optreden voor chmod() kunnen ook optreden voor fchmodat(). De volgende additionele fouten kunnen optreden voor fchmodat():

mapbi is geen geldige bestandindicator.
Ongeldige vlag opgegeven in vlaggen.
padnaam is relatief en mapbi is een bestandsindicatoor die naar een bestand wijst die geen map is.
vlaggen specificeerden AT_SYMLINK_NOFOLLOW, die niet ondersteund is.

VERSIES

fchmodat() is toegevoegd aan Linux in kernel 2.6.16; bibliotheek ondersteuning werd toegevoegd aan glibc in versie 2.4.

VOLDOET AAN

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

fchmodat(): POSIX.1-2008.

OPMERKINGEN

C library/kernel verschillen

De GNU C bibliotheek fchmodat() omwikkel functie implementeert de door POSIX gespecificeerde interface zoals beschreven op deze pagina. Dit interface verschilt van de onderliggende Linux systeem aanroep, die het vlaggen argument niet heeft.

Glibc-opmerkingen

Op ouder kernels waar fchmod() niet beschikbaar is, valt de glibc omwikkel functie terug op het gebruik van chmod(). Als padnaam een relatieve padnaam is, dan construeert glibc een padnaam gebaseerd op de symbolische koppeling in /proc/self/fd die overeenkomt met het dirfd argument.´

ZIE OOK

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

COLOFON

Deze pagina is onderdeel van release 5.10 van het Linux man-pages-project. Een beschrijving van het project, informatie over het melden van bugs en de nieuwste versie van deze pagina zijn op https://www.kernel.org/doc/man-pages/ te vinden.

VERTALING

De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>

Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.

Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-dutch@lists.debian.org.

15 september 2017 Linux