Chmod
Inhoud |
Rechten systeem
Chmod is een unix commando en is een afkorting van 'Change Mode'. De 'mode' betekent in dit geval de toegangsrechten van zowel bestanden als directories. PHP kent deze functies ook, omdat PHP veel ingezet wordt op un*x en linux omgevingen. Let wel op dat windows (helaas) een andere methode heeft voor bestandsrechten en op Windows werkt chmod dus ook (helemaal) niet.
Het rechtensysteem in een notendop
Om te kunnen begrijpen wat chmod doet moet je eerst weten hoe het rechtensysteem in elkaar zit.
Het un*x rechten systeem werkt met gebruikers en gebruikersgroepen. Elke gebruiker zit altijd in één of meer gebruikersgroepen. Bestanden en directories hebben altijd één gebruiker en één groep als eigenaar. De rechten voor elk bestand en elke directory kunnen worden ingesteld voor die gebruiker en die groep. Daarnaast is het mogelijk om rechten op te geven voor iedereen die niet de eigenaar is of niet in de eigenaar-groep zit.
In chmod-termen heet de gebruiker die eigenaar is gewoon 'user', de groep die eigenaar is heet 'group' en de overigen heten 'other' (niet guest!). Deze drie worden afgekort tot 'u' ','g' en 'o'.
Rechten
Voor elk van de drie soorten rechthebbenden kun je bepalen of ze het bestand mogen lezen (read: r), schrijven (write: w) of uitvoeren (execute: e)
Bitwise
Zoals je waarschijnlijk al weet werkt alles met computers bitwise. 1 = true, 0 = false. Met bits rekenen gaat van rechts naar links. De waarde van een bit is altijd het dubbele van degene rechts ervan om het simpel te houden.
We nemen een viertal bits: 1111. Nu gaan we vanaf rechts lezen, en verdubbelen we telkens de waarden. In dit voorbeeld staat alles aan, dus hebben we de waarde: 8, 4, 2, 1. Als je dit bij elkaar optelt, 1+2+4+8 = 15 = 1111. Als we nu een getal hebben van 1001, hebben we alsnog 8, 4, 2, 1, maar omdat de middelste 2 false zijn, houden we over: 8, 0, 0, 1. Dus we doen 1+8 = 9 = 1001.
Zie ook HetBinaireStelsel
chmodden
Nu je ongeveer weet hoe bits werken, kan je dus ook de rechten bereken. Rechten werken namelijk óók met bits! Het werkt als volgt:
Read Write Execute r w x r = 4 w = 2 x = 1 ------- rwx = 7
Dat levert de volgende rechtencombinaties op.
000 = 0 = --- 001 = 1 = --x 010 = 2 = -w- 011 = 3 = -wx 100 = 4 = r-- 101 = 5 = r-x 110 = 6 = rw- 111 = 7 = rwx
Elk van deze combinaties is te gebruiken voor de eigenaar, de eigenaarsgroep en de 'overigen'. Dit geef je chmod aan door gewoon drie setjes van rwx op te geven
777 = 111.111.111 = rwx-rwx-rwx
Dus de eigenaar heeft alle rechten, de eigenaarsgroep heeft alle rechten, en de overigen hebben alle rechten. Dit is een voorbeeld, 777 is een instelling die je in de praktijk zeer zelden gebruikt omdat je vrijwel nooit wilt dat iedereen iets met een bestand of directory kan doen.
Voorbeelden
662 = 110.110.010 = rw- rw- -w- 774 = 111.111.100 = rwx rwx r-- 235 = 010.011.100 = -w- -wx r-x
Gebruik van het chmod commando op Linux
Als je toegang hebt tot de shell van je server, kun je met behulp van het chmod commando de permissies aanpassen.
De meest bekende methode is door middel van het opgeven van de numerieke code.
chmod 775 /pad/naar/directory/
Als je meerdere bestanden wil aanpassen, kun je gebruik maken van wildcard tekens:
chmod 664 /pad/naar/bestanden/*.ext
Je kan ook recursief (inclusief lager gelegen mappen) permissies aanpassen. Het nadeel is dat voor directories en bestanden andere permissies gezet moeten worden. Directories hebben de execute bit staan, normale bestanden niet.
Er is echter ook een alternatieve methode die dit een stuk makkelijker maakt:
chmod g+w /pad/naar/bestand.ext
Dit houd in: set het write bit (+w) voor de groep (g) op /pad/naar bestanden. Nu kun je door het toevoegen van een optie dit recursief doen:
chmod -R g+w /pad/naar/bestanden/
De opdracht is als volgt op te bouwen: - Welke permissie moet er aangepast worden (meerdere mogelijk)?
- u, voor user / owner - g, voor de group - o, voor other, anderen (world) - a, voor alle bovengenoemde
- Wat moet er gebeuren?
- '-', permissie intrekken - '=', permissie vervangen - '+', permissie toevoegen
- Welke permissies moeten er aangepast worden?
- r, read - w, write - x, execute - X, execute, maar alleen als er al een execute bit gezet was
Je kan meerder van deze opdrachten meegeven, gescheiden door een komma.
Voorbeeld: Maak alle bestanden beschijfbaar voor de eigenaar en de groep, maar geef de rest alleen leestoegang.
chmod -R ug=rwX,o=rX /pad/naar/directory/
Alternatief kunnen met de meeste ftp-clients ook de rechten aanpassen. En talen als php bevatten ook de functie chmod()[1].
Er is nog veel meer mogelijk, raadpleeg daarvoor de man pagina. de man pagina van chmod





