wiki.phpfreakz.nl
Aanmelden Artikel Overleg Bewerk Geschiedenis Go to the site toolbox

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

Site Toolbox:

Persoonlijke hulpmiddelen
De laatste wijziging op deze pagina vond plaats op 4 apr 2009 12:18. - Deze pagina werd 3.135 maal bekeken. - Disclaimers - Over PFZWIKI