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

Uit Wikibooks

Standaardbeveiliging[bewerken]

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.

Uitleg

Automagisch Automatisch + magisch

Typ het commando umask om het gebruikersmasker te weten te komen:

ubuntu@ubuntu:~$ umask 0022

Uitleg

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:

Gewone bestanden
 0666
-0022
 ----
 0644

Mappen
 0777
-0022
-----
 0755

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.

Opdracht

Het uitvoerrecht op mappen

  1. 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.
  2. 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[bewerken]

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:

chmod [optie(s)] mode bestand

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.

Opdracht

Chmod voorbeeld: een script

  1. Open in Applications → Hulpmiddelen het Tekst-editor programma.
  2. Schrijf daarin het volgende:
echo "Ik leer Linux"
  1. Sla het op in je homedirectory door File → Save as te selecteren uit het menu van dit programma.
  2. Noem het bestand bijvoorbeeld “mijn_eerste_script” en bewaar door op Save te klikken.
  3. Neem nu je terminalvenster terug.
  4. 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.
  5. 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.
  6. Denk eraan om de Bash features te gebruiken en zo weinig mogelijk zelf tekst te typen!
  7. 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 
  1. Gebruiken we nu het chmod commando om het bestand uitvoerbaar te maken:
ubuntu@ubuntu:~$ chmod 744 mijn_eerste_script 
  1. Hiermee geven we aan de eigenaar van het bestand lees-, schrijf- en uitvoerrechten (4+2+1); de andere twee groepen krijgen enkel leesrechten.
  2. 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[bewerken]

Onderstaande tabel probeert ter referentie de numerieke waarden voor toegangscontrole een betekenis te geven.

Opdracht 	        Betekenis
chmod 400 bestand 	Bescherm een bestand tegen accidenteel overschrijven.
chmod 500 map 	        Bescherm jezelf tegen per ongeluk verwijderen, hernoemen of verhuizen van bestanden of mappen in deze map.
chmod 600 bestand 	Een privébestand dat enkel veranderd kan worden door de eigenaar.
chmod 644 bestand 	Een publiek leesbaar bestand dat enkel veranderd kan worden door de eigenaar.
chmod 660 bestand 	Gebruikers die in dezelfde groep zitten als jij kunnen dit bestand veranderen, anderen hebben geen enkel toegangsrecht.
chmod 700 bestand 	Enkel de eigenaar heeft alle toegangsrechten, alle andere gebruikers hebben geen enkel recht.
chmod 755 bestand 	Voor bestanden die leesbaar en uitvoerbaar zijn door andere gebruikers, maar enkel door de eigenaar veranderd kunnen worden.
chmod 770 bestand 	Standaard mode voor bestandsdeling binnen een groep.
chmod 777 bestand 	Iedereen mag alles.

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.

Uitleg

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.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.