Ubuntu: Linux voor mensen/Werken met bestanden/Toegangsrechten veranderen
Standaardbeveiliging
bewerkenBestanden 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:
ubuntu@ubuntu:~$ umask 0022
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.
Het uitvoerrecht op mappen
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
bewerkenToegansgrechten 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.
Chmod voorbeeld: een script
echo "Ik leer Linux"
ubuntu@ubuntu:~$ ./mijn_eerste_script bash: ./mijn_eerste_script: Permission denied
ubuntu@ubuntu:~$ chmod 744 mijn_eerste_script
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
bewerkenOnderstaande 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.
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. |