Linux systemen werken met gebruikers die elk hun eigen werkomgeving hebben. Om deze werkomgeving af te kunnen schermen, krijgen alle bestanden en mappen op uw systeem een gebruiker of eigenaar toegewezen. Enkel de eigenaar van het bestand kan elke bewerking op zijn/haar bestand uitvoeren. De meeste bestanden en mappen op een Linux systeem behoren toe aan de systeemgebruiker root. Andere gebruikers kunnen deze bestanden en mappen niet zomaar aanpassen, verwijderen of uitvoeren. Het systeem is daardoor enigszins beveiligd tegen ongewilde aanpassingen. Soms doet zich de situatie voor dat je een bestand waarvan je eigenaar bent, wilt laten beheren door een andere gebruiker. Bijvoorbeeld bij het doorgeven van een document. Of het doorgeven van een webpagina aan een webserver die enkel met aan de gebruiker wwwrun toegekende bestanden en mappen werkt.
Om de eigenaar van een bestand aan te passen, gebruiken we de opdracht chown (CHange OWNer). Als voorbeeld gebruiken we de startpagina van een webpagina. Na het schrijven van de webpagina vragen we met de ls opdracht zijn eigenschappen op:
dany@pindabook:~> ls -lart index.html
-rw-r--r-- 1 dany users 6269 24 aug 20:55 index.html
Daaruit blijkt dat dany de eigenaar (owner) van de webpagina is. Linux heeft drie niveau's waarbij je aan bestanden en mappen beperkingen kunt opleggen. De eigenaar mag alle bewerkingen op zijn eigen bestanden en mappen uitvoeren of er toelating voor geven. De groep gebruikers waartoe de eigenaar behoort, krijgt aparte door de eigenaar vastgelegde bewerkingsmogelijkheden. Alle andere gebruikers krijgen eveneens door de eigenaar vastgelegde bewerkingsmogelijkheden. Er is echter één supergebruiker, namelijk de systeembeheerder root, deze kan alle bestanden en mappen van alle gebruikers zelfs zonder toelating van de eigenaar naar believen beheren.
De ls opdracht toont ons eveneens dat de eigenaar dany tot de groep users behoort. De bewerkingsmogelijkheden van de verschillende gebruikers kunnen we aflezen uit de reeks -rw-r--r--, waarbij het eerste - teken aanduidt dat index.html een bestand is. Daarna staan drie groepen van telkens drie rechten (rwx), waarbij r (read) je toelaat het bestand te openen, w (write) waardoor je het bestand kunt aanpassen en x (eXecute) waarmee je het bestand (programma of script) kunt starten. De eigenaar dany kan het bestand index.html openen en aanpassen (rw-); de gebruikers die tot dezelfde groep van dany behoren, kunnen het bestand openen (r--) en alle andere gebruikers eveneens enkel het bestand openen (r--).
Daar de index.html pagina klaar is om op het internet geplaatst te worden, gaan we de gebruiker van het bestand aanpassen naar root, waardoor enkel de systeembeheerder het bestand nog kan beheren.
dany@pindabook:~>sudo chown root index.html
[sudo] wachtwoord voor root: dany@pindabook:~>ls -lart index.html
-rw-r--r-- 1 root users 6269 24 aug 20:55 index.html
Ook de groep van een bestand kan je aanpassen. Om de groep van het bestand index.html van users (gewone gebruikers) te veranderen naar het strengere root (systeembeheerders), gebruik je de volgende opdracht:
dany@pindabook:~>sudo chown :root index.html
dany@pindabook:~>ls -lart index.html
-rw-r--r-- 1 root root 6269 24 aug 20:55 index.html
Let in de chown opdracht op de : voor de aan te passen groepsnaam. Met : pas je de groepsnaam aan, zonder : de naam van de eigenaar.
Je kunt de naam van de eigenaar en de groepsnaam ook in één opdracht aanpassen:
dany@pindabook:~>sudo chown dany:users index.html
dany@pindabook:~>ls -lart index.html
-rw-r--r-- 1 dany users 6269 24 aug 20:55 index.html
In sommige situaties wil je eerst checken of het bestand een bepaalde eigenaar en groep bezit, voor je deze aanpast. Zo pas je de eigenaar en de groep van index.html enkel aan als deze als eigenaar:groep dany:users heeft:
dany@pindabook:~>sudo chown --from=dany:users root:root index.html
[sudo] wachtwoord voor root: dany@pindabook:~>ls -lart index.html
-rwxr-xr-x 1 root root 6269 24 aug 20:55 index.html
Wil je een bestand of map dezelfde eigenaar en groep geven als een ander bestand (het referentiebestand):
dany@pindabook:~>ls -lart .bash_history
-rw------- 1 dany users 1818 19 aug 14:26 .bash_history dany@pindabook:~>sudo chown --reference=.bash_history index.html
[sudo] wachtwoord voor root: dany@pindabook:~>ls -lart index.html
-rwxr-xr-x 1 dany users 6269 24 aug 20:55 index.html
Om een map en zijn volledige inhoud een andere eigenaar en/of groep te geven, gebruik je recursiviteit (-R). Eerst maken we een map, plaatsen er een testbestand in en passen de eigenaar en groep aan zodat internetgebruikers deze als uploadmap kunnen gebruiken:
dany@pindabook:~>sudo mkdir -p /srv/www/webdav
[sudo] wachtwoord voor root: dany@pindabook:~>sudo touch /srv/www/webdav/testbestand.txt
dany@pindabook:~>ls -lart /srv/www/webdav
totaal 8 drwxr-xr-x 5 root root 4096 24 aug 21:20 .. -rw-r--r-- 1 root root 0 24 aug 21:21 testbestand.txt drwxr-xr-x 2 root root 4096 24 aug 21:21 . dany@pindabook:~>sudo chown -R wwwrun:www /srv/www/webdav/
dany@pindabook:~>ls -lart /srv/www/webdav/
totaal 8 drwxr-xr-x 5 root root 4096 24 aug 21:20 .. -rw-r--r-- 1 wwwrun www 0 24 aug 21:21 testbestand.txt drwxr-xr-x 2 wwwrun www 4096 24 aug 21:21 .
Bij het uitvoeren van scripts maken gebruikers zich soms onnodig zorgen bij foutmeldingen. De volgende opdracht veroorzaakt bij mij een foutmelding:
dany@pindabook:~> sudo chown --from=dany:users root:root index.php
[sudo] wachtwoord voor root:
chown: kan geen toegang krijgen tot 'index.php': Bestand of map bestaat niet
Door de optie -f toe te voegen onderdruk je de foutmelding:
dany@pindabook:~>sudo chown -f --from=dany:users root:root index.php
dany@pindabook:~>ls -lart index.php
ls: kan geen toegang krijgen tot 'index.php': Bestand of map bestaat niet
Geen foutmelding, maar de opdracht werd ook niet uitgevoerd, het bestand index.php bestaat namelijk niet.
Om een bestand of map een andere eigenaar te geven en tegelijkertijd te groep aan te passen naar de groep waartoe de eigenaar behoort, gebruik je:
dany@pindabook:~>sudo chown root: index.html
[sudo] wachtwoord voor root: dany@pindabook:~>ls -lart index.html
-rwxr-xr-x 1 root root 6269 24 aug 20:55 index.html
Let vooral op de positie van de dubbele punt.
Zoals gebruikelijk bij symbolische koppelingen (links) worden bewerkingen op koppelingen uitgevoerd op het bestand en niet op de koppeling.
dany@pindabook:~>sudo ln -s index.html default.html
[sudo] wachtwoord voor root: dany@pindabook:~>ls -lart index.html
-rwxr-xr-x 1 root root 6269 24 aug 20:55 index.html dany@pindabook:~>ls -lart default.html
lrwxrwxrwx 1 root root 10 25 aug 14:11 default.html -> index.html dany@pindabook:~>sudo chown dany: default.html
dany@pindabook:~>ls -lart index.html
-rwxr-xr-x 1 dany users 6269 24 aug 20:55 index.html dany@pindabook:~>ls -lart default.html
lrwxrwxrwx 1 root root 10 25 aug 14:11 default.html -> index.html
De koppeling zelf blijft dus eigendom van de oorspronkelijke eigenaar en groep.
Dit gaat als volgt:
dany@pindabook:~> sudo chown root:root /srv/www/webdav/
[sudo] wachtwoord voor root:
Met de stat opdracht kan je de aanpassing bekijken:
dany@pindabook:~> stat /srv/www/webdav/
Bestand: /srv/www/webdav/
Grootte: 4096 Blokken: 8 IO-blok: 4096 map
Apparaat: 804h/2052d Inode: 267169 Koppelingen: 2
Toegang: (0755/drwxr-xr-x) UID: ( 0/ root) GID: ( 0/ root)
Toegang: 2018-08-24 21:23:20.291042270 +0200
Gewijzigd: 2018-08-24 21:21:12.029557413 +0200
Veranderd: 2018-08-25 14:17:43.494951277 +0200
Ontstaan: -
Bij het recursief (-R) aanpassen (inclusief de inhoud van de map), heb je de volgende mogelijkheden voor de koppelingen (opties):
Computersystemen werken met getallen (ID's), gebruikers met namen. Zo vertaalt het systeem de gebruiker root naar het gebruikers ID (UID) 0 en de groep root naar het groeps ID (GID) 0. De hoofdgebruiker (niet systeembeheerder) krijgt meestal het UID 1000 en GID 1000. de chown opdracht werkt ook met UID's en GID's:
dany@pindabook:~>sudo chown 0:0 index.html
[sudo] wachtwoord voor root: dany@pindabook:~>ls -lart index.html
-rwxr-xr-x 1 root root 6269 24 aug 20:55 index.html
Met de -v (verbose) optie worden alle uitgevoerde bewerkingen op het scherm weergegeven:
dany@pindabook:~>sudo chown 1000:1000 index.html -v
[sudo] wachtwoord voor root: de eigenaar van 'index.html' is veranderd van root:root naar 1000:1000 dany@pindabook:~>ls -lart index.html
-rwxr-xr-x 1 dany 1000 6269 24 aug 20:55 index.html
Raadpleeg met de opdracht man chown
de manual met een overzicht van de chown opdracht.
Met de opdracht info chown
krijg je de informatie pagina's met uitgebreidere informatie.
En op internet kan je terecht op de chown webpagina van de GNU Coreutils.