In Linux heeft elk bestand zogenaamde permissies. Zoals u misschien
al gezien heeft kunt u de permissies van een bestand met het
ls -l commando zien:
$ ls -l logo.jpg
-rw-r--r-- 1 danieldk users 9253 Dec 23 19:12 logo.jpg
In het eerste kolom worden de permissies afgebeeld. De instelbare
permissies zijn read(r), write(w) and execute(x). Deze permissies
zijn in te stellen voor drie "groepen": owner(u), group(g) en
others(o). Deze permissies zijn zichtbaar als de tweede tot de
negende karakter in het eerste kolom. Deze negen karakters zijn
in drieën verdeelt. De eerste drie karakters geven de permissies
voor de eigenaar(owner) aan, de drie karakters die daarop volgen de
permissies van de groep(group) en de laatste drie karakters de
permissies van anderen (others). Naar bestand in het bovenstaande
voorbeeld mag dus geschreven worden door de eigenaar en het bestand
mag door iedereen (owner, group en others) gelezen worden.
Op het systeem zijn verschillende gebruikers aanwezig (een lijst
is te zien in /etc/passwd) en een gebruiker
kan weer lid zijn van bepaalde groepen. Op deze manier is het
mogelijk per file vrij gedetailleerd in te stellen wie wat wel
en niet mag doen. In het bovenstaande voorbeeld is te zien dat
danieldk de eigenaar van het bestand is
en dat group rechten gelden voor de groep users.
De groeprechten verschillen in het bovenstaande voorbeeld niet
van die van andere mensen (others).
chown(1) is een programma waarmee u de eigenaar
van een bestand in kunt stellen en voor welke groep de groepsrechten
gelden. Stel dat we danieldk eigenaar willen
maken van het bestand logo2.jpg, dan kan dat
als volgt:
$ chown danieldk logo2.jpg
We kunnen nu met ls zien dat de eigenaar
danieldk is geworden:
$ ls -l logo2.jpg
-rw-r--r-- 1 root root 9253 Dec 29 11:35 logo2.jpg
$ chown danieldk logo2.jpg
$ ls -l logo2.jpg
-rw-r--r-- 1 danieldk root 9253 Dec 29 11:35 logo2.jpg
Maar de groepspermissies gelden nog steeds voor de groep
root. De groep waarvoor de groepspermissies
gelden is te veranderen door een punt achter de eigenaar te zetten
en daarachter de groep te vermelden waarvoor groepspermissies moeten
gelden (in dit voorbeeld de groep nedslackers):
$ chown danieldk.nedslackers logo2.jpg
$ ls -l logo2.jpg
-rw-r--r-- 1 danieldk nedslackers 9253 Dec 29 11:35 logo2.jpg
Natuurlijk is het ook mogelijk in één keer de rechten
van een directorystructuur te veranderen dit kan met behulp van de
recursive (-R) parameter:
$ chown -R danieldk.users oggs/
Permissies voor bestanden kunnen gewijzigd worden met het
chmod(1) commando. De meest basale syntax
van het chmod commando ziet er als volgt uit:
chmod [u,g,o][+/-][r,w,x] bestandsnaam.
De eerste parameter is dus een samenvoegsel van: 1. voor welke
groepen de operatie geldt, 2. of de gespecificeerde permissies
toegekend moeten worden (+) of afgenomen (-) moeten worden en
3. om welke permissies het gaat. Stel je wilt het bestand
notities schrijfbaar maken voor de eigenaar
van het bestand en de groep die voor het bestand ingesteld is,
dan voer je het volgende commando uit:
$ chmod ug+w notities
Zoals je hieronder ziet wordt notities voor
de eigenaar en de groep schrijfbaar:
$ ls -l notities
-r--r--r-- 1 daniel users 12 Mar 9 16:28 notities
bash-2.05b$ chmod ug+w notities
bash-2.05b$ ls -l notities
-rw-rw-r-- 1 daniel users 12 Mar 9 16:28 notities
Net als bij het chown commando is het met de
recursive (-R) parameter mogelijk de rechten voor een directorystructuur
te veranderen. Het volgende voorbeeld maakt de directory
geheim/ en alle bestanden en directories daaronder
onleesbaar voor de ingestelde groep en andere gebruikers:
$ chmod -R go-r geheim/