# Ubuntu: Linux voor mensen/Werken met bestanden/Toegangsrechten veranderen
## Standaardbeveiliging

Bestanden die aangemaakt worden op een Linuxsysteem hebben altijd toegangsbeperkingen. Bestanden die je zelf aanmaakt, zijn per definitie niet uitvoerbaar. Een van de neveneffecten van deze strikte manier van werken is dat je op Linux dus gerust een E-mail met een virus mag openen en het virus downloaden. Het zal gewoon blijven staan waar je het plaatst en verder niets doen, want het zal nooit “automagisch” uitvoerbaar worden - zou het überhaupt al werken op je systeem. Dit komt door het zogenaamde gebruikersmasker of user mask. Dat is een waarde die wordt afgetrokken van de standaard numerieke waarde van de toegangsrechten, die bepaald wordt in een van de bibliotheken op je systeem.
* Automagisch
* Automatisch + magisch
Typ het commando umask om het gebruikersmasker te weten te komen:
* Speciale toegangsrechten
* We zagen reeds dat de toegangsrechten voor de gebruiker, de groep en de anderen door drie cijfers voorgesteld worden. Er is echter nog een vierde groep van toegangsrechten, met een speciale betekenis. Doorgaans worden die rechten enkel door systeembeheerders gebruikt. We mogen er als gewone gebruiker vanuit gaan dat de waarde van deze speciale rechten gelijk is aan nul. De speciale rechten komen op de eerste positie, vandaar de eerste nul in de maskerwaarde. Het zou bijgevolg dus ook juister zijn om de waarde van de rechten van het testbestand uit het voorbeeld voor te stellen als “0644”. Dit noemen we ook wel eens de octale waarde.
De standaard toegangsrechten voor een gewoon bestand worden in de bibliotheek bepaald als “0666”, dus lezen en schrijven (4+2) voor de drie groepen van gebruikers, zonder speciale rechten. Voor een map is het echter “0777”, lezen, schrijven en uitvoeren (4+2+1) voor de drie groepen, want een map moet uitvoerbaar zijn, anders kan je er niet ingaan. Van deze waarden wordt telkens de waarde van het masker afgetrokken:
Een gewoon bestand heeft dus standaard lees- en schrijfrecht voor de eigenaar, en enkel leesrecht voor de groepseigenaar en de gebruikers die niet de eigenaar zijn en ook niet in de groep zitten die eigenaar is van het bestand.
Een map heeft naast deze rechten ook uitvoerrecht, anders kan je niet in de map gaan.
* Het uitvoerrecht op mappen
* Je kan dit nagaan door op eender welke manier een bestand aan te maken. Gebruik het mkdir commando om de standaardrechten op een map te controleren.
* Probeer het volgende en noteer wat er gebeurt.
* Maak een map aan: mkdir een_map.
* Neem voor alle gebruikersgroepen het uitvoerrrecht weg door het commando chmod a-x een_map uit te voeren.
* Probeer cd een_map.
* Kijk de rechten op de map na met het commando ls -ld een_map.
* Opgelet met kopiëren! Als je bestanden kopieert, worden de toegangsrechten overgenomen. Een kopie van een uitvoerbaar bestand zal dus ook uitvoerbaar zijn.

## Het chmod commando

Toegansgrechten veranderen met de grafische interface behoeft geen uitleg. Wij gaan hier bespreken hoe je op de commandoregel de rechten van bestanden kan veranderen. Waarom, vraag je je misschien af, het is toch gemakkelijker om een paar keer met de muis te klikken? Vast wel, maar als je bijvoorbeeld op een machine op het Internet bestanden moet manipuleren, of je zit bijvoorbeeld thuis en je moet iets doen op een machine van je bedrijf, zal het doorgaans moeilijk of onmogelijk zijn de grafische interface te gebruiken. Normaliter zal je wel in de mogelijkheid zijn om via een beveiligde verbinding in een terminalvenster te werken.
In een terminalvenster gebruiken we het programma chmod, wat staat voor change mode. Niemand zegt echter de volledige naam van het commando. In het Engels is in de UNIX-en Linuxwereld “to chmod” een algemeen aanvaard werkwoord, en ook in het Nederlands spreken we inmiddels van “chmodden” als we doelen op het veranderen van de toegangspremissies van bestanden of mappen.
De syntax is als volgt:
De meest gebruikte optie is -R (recursive), om alle bestanden in een map, incluis alle mappen in die map, dezelfde toegangsrechten te geven. De mode kan je bepalen door ofwel de octale waarde van de gewenste permissie op te geven, ofwel door de symbolen u, g en o en r, w en x te gebruiken.
* Chmod voorbeeld: een script
* Open in Applications → Hulpmiddelen het Tekst-editor programma.
* Schrijf daarin het volgende:
* echo "Ik leer Linux"
* Sla het op in je homedirectory door File → Save as te selecteren uit het menu van dit programma.
* Noem het bestand bijvoorbeeld “mijn_eerste_script” en bewaar door op Save te klikken.
* Neem nu je terminalvenster terug.
* Controleer met ls of het script in je homedirectory staat. Als je je niet in je homedirectory bevindt, typ dan cd om naar die map te gaan.
* Een programma uitvoeren dat zich niet in een map in de lijst van de PATH bevindt, doe je door ofwel het volledige pad op te geven, ofwel door een relatief pad op te geven. In dit geval wordt het dus ofwel /home/ubuntu/mijn_eerste_script ofwel ./mijn_eerste_script.
* Denk eraan om de Bash features te gebruiken en zo weinig mogelijk zelf tekst te typen!
* Je zal echter merken dat het bestand niet uitvoerbaar is, als je de vervolledigingsfunkties van de shell gebruikt, werkt de Tab-toets zelfs niet eens. Typ je toch manueel de naam van het bestand, dan krijg je een foutmelding:
* ubuntu@ubuntu:~$ ./mijn_eerste_script bash: ./mijn_eerste_script: Permission denied
* Gebruiken we nu het chmod commando om het bestand uitvoerbaar te maken:
* ubuntu@ubuntu:~$ chmod 744 mijn_eerste_script
* Hiermee geven we aan de eigenaar van het bestand lees-, schrijf- en uitvoerrechten (4+2+1); de andere twee groepen krijgen enkel leesrechten.
* Probeer nu opnieuw het programma uit te voeren.
* Evengoed hadden we het volgende chmod commando kunnen geven:
* chmod u+x mijn_eerste_script
* Daarbij gaan we uit van de standaard toegangsrechten 644, en we voegen het recht op uitvoeren toe aan de rechten van de eigenaar van het bestand.

### Overzicht van de octale waarden

Onderstaande tabel probeert ter referentie de numerieke waarden voor toegangscontrole een betekenis te geven.
Volledige achtergrond vind je in man chmod. Mocht je het ooit nodig hebben om bestanden van eigenaar of van groep te veranderen, lees dan ook de man pagina's van de commando's chown en chgrp.
* Permissies en find
* Gebruik het find commando om bestanden met een bepaald recht te zoeken. Less de man pagina van find voor meer info over dit onderwerp.