File and Directory permissions
File systeem
Het unix file systeem is een hierarchisch systeem, net als bij Windows. Dat betekent dat er ergens een begin is; onder windows is dat (bijna altijd) c:\ en onder Linux is dat /
Owner en Group
FIles en directories hebben een owner (ook wel user) en een group. De owner is meestal degene die de file heeft aangemaakt. De rechten van de owner en de group kunnen apart worden ingesteld.
RWX - Read, Write en Execute
We kennen drie soorten rechten: Read, Write en eXecute (RWX). Read is voor lezen, write voor aanpassen/schrijven en execute betekent dat je een file mag uitvoeren. Voor een directory betekent de execute dat je naar de directory toe mag gaan.
ls -l
Als je een ls -l
doet dan zie je bijvoorbeeld
drwxrwxr-x 17 max apache 4096 Nov 27 22:03 www
De drwxrwxrwx geven de file permissions (rechten) aan, daarover later meer). De 17 geeft het aantal links aan, dit is voor nu niet belangrijk. 'max' is de owner, ook wel user van de file. apache is de group waartoe de file behoort. 4096 is het aantal bytes dat de file in beslag neemt (dat is niet helemaal hetzelfde als de grootte van de file), dan volgt de 'last modification date' en als laatste zie je de file name.
De owner kan bijvoorbeeld Read and Write-rechten hebben en leden van de group kunnen bijvoorbeeld alleen Read-rechten hebben. Je kunt tenslotte ook nog de rechten van 'iedereen' (other) instellen, dat zijn alle gebruikers die niet de owner zijn en niet in in de group zitten.
Voor elke file en directory staan 10 letters, we kijken naar de laatste 9. Dit zijn 3 groepjes van 3; rwx, rwx en rwx. De eerste rwx staat voor de owner/user van de file, de tweede voor de group en de laatste voor others.
Stel je ziet dit als je een ls -l
uitvoerd:
-rw-r--r-- 1 root root 52 Jan 11 18:18 subuid
Dat betekent dat de file subuid van root is (owner/user) en dat die ook aan de group root toebehoort. De owner root heeft Read en Write rechten en de groep heeft alleen read rechten. Ten slotten hebben others ook read rechten.
File permissies instellen
Met het commando chmod (CHange file MODe bits) kunnen de rechten worden ingesteld van de User, Group en Others. Stel je wilt de rechten instellen van de User en de Group dan gebruik je UG. Stel je wilt de rechten instellen van de User, Group en Others dan gebruik he UGO.
Dan kun je rechten toevoegen of afnemen, dat doe je met een + of een -.
Vervolgens kun je read, write en execute rechten toekenen of afnemen. Read en write toevoegen doe je met +rx. Afnemen van alle rechten doe je met -rwx.
Voorbeelden chmod
Afnemen van read rechten van others voor file_a | chmod o-r file_a |
Toevoegen van read en write rechten aan user en group voor alle files in deze dierctory | chmod ug+rw * |
Toevoegen van alle rechten aan iedereen voor alle files in deze directory en alles 'hieronder' | chmod -R ugo+rwx |
Recursief
In het laatste commando is de flag -R toegevoegd. Dit betekent recurief en dat betekent dat alle files en alle directories worden veranderd. Directories in directories worden ook veranderd, ook de directories in de directories in de firectories, etc. worden veranderd.
FIle permissies instellen - octaal
In plaats van rechten toekennen in meerdere stappen kan je dat ook in één doen. De r is 4, de w is 2 en de x is 1. Dus als je rw- wilt instellen dan gebruik je het 4+2=6. Als je r-x wilt instellen gebruik je 4+1=5. Dat doe je dan drie keer voor de user, de group en others. rwx wordt 4+2+1=7 Als we dus de user, group en others allemaal +rwx willen geven dan kan dat met een chmod 777.
Read | 4 |
Write | 2 |
Execute | 1 |
Het getal dat je gebruikt is een getal in het 8-tallig stelsel, we noemen dat het octale stelsel.
r=4, w=2 en x=1. Dus rwx=4+2+1=7
Nog meer voorbeelden
geef alleen alle rechten op file01 aan owner |
chmod u+rwx file01 chmod go-rwx file01 |
chmod 700 file01 |
geef owner, groep en others alle rechten |
chmod ugo+rwx file01 |
chmod 777 file01 |
geef alleen de owner en de groep leesrechten op file01 |
chmod ug+r file01 chmod ug-wx file01 chmod o-rwx file01 |
chmod 440 file01 |
User en groups aanpassen
Met chown kun je de user/owner aanpassen en met chgrp kun je de group aanpassen.
chown | CHange Owner |
chgrp | CHange GRoup |
chown voorbeelden
maak root owner van file file01 | chown root ./file01 | |
maak apache owner van alle file in /var/www | chown -R apache /var/www | -R is recursief |
van de file01 maar root owner en voeg de group root ook toe | chown root:root ./file01 |
chgrp voorbeeld
Geeft de group root rechten op file02 | chgrp root ./file02 |