Ga naar hoofdinhoud

4.1 Van wie is dit?

Hier bouw je op verder: Permission denied bij cat

Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.

Typ in de oefenterminal ls -l /etc. De -l staat voor long: je krijgt per bestand een hele regel.

Terminal laden...
-rw-r--r-- 1 root root 318 Mar 26 10:00 passwd
-rw-r----- 1 root shadow 1024 Mar 26 10:00 shadow

Twee regels uit die lijst. Elk bestand op Linux heeft een eigenaar (hier root) en een groep (root of shadow). root is de beheerder van de computer: die mag alles.

De rechten lezen​

Vooraan elke regel staan tien tekens. Het eerste zegt wat het is: - voor een bestand, d voor een map (directory). De andere negen zijn drie groepjes van drie:

-rw-r--r--
bestandeigenaargroepde rest

Per groepje:

  • r (read): lezen;
  • w (write): veranderen;
  • x (execute): uitvoeren als programma, of bij een map: erin gaan;
  • -: dat mag niet.

passwd heeft rw-r--r--: root mag lezen en schrijven, iedereen mag lezen. Daarom lukte cat /etc/passwd in les 2.1.

Voorspel​

shadow heeft rw-r-----. Jij bent student, en je zit niet in de groep shadow. Mag je dit bestand lezen?

Klik hier als je het hebt geprobeerd

Nee. Voor "de rest" staat er ---: niets. Dat is de Permission denied uit les 2.1. Alleen root en wie in de groep shadow zit, mag erin kijken. Zo komt geen gewone gebruiker bij de wachtwoorden.

Wie ben jij?​

Met id zie je je naam en de groepen waarin je zit:

id
uid=1000(student) gid=1000(student) groups=1000(student)

Je zit alleen in je eigen groep student. Een nieuw bestand maken is schrijven in de map: je zet er een naam bij. Je is van jou, dus daar mag dat. De map /etc is van root en heeft rwxr-xr-x: alleen de eigenaar heeft de w. Probeer maar:

touch /etc/test.txt
touch: cannot touch '/etc/test.txt': Permission denied
Eerst op papier

Oefen met kaartjes welk rijtje van ls -l voor wie geldt: Mag dit?. Je docent kan de hand-out printen.

Opdracht 4.1.a: rechten lezen​

Lees deze regel en beantwoord de drie vragen.

-rwxr-x--- 1 www-data www-data 1024 Mar 26 10:00 start.sh
  1. Van wie is het bestand?
  2. Mag iemand uit de groep www-data het uitvoeren?
  3. Mag student het lezen?
Klik hier voor een tip

Knip de tien tekens op: één teken, dan drie keer drie.

Klik hier voor het antwoord
  1. Van www-data, de gebruiker van de webserver.
  2. Ja: de groep heeft r-x, dus lezen en uitvoeren.
  3. Nee: voor de rest staat er ---. student is niet de eigenaar en zit niet in de groep.

Waarom dit ertoe doet​

Een webserver draait niet als root, maar als een eigen gebruiker zoals www-data. Vindt iemand een gat in de website, dan kan hij doen wat www-data mag, en niet meer. Als je in de fullstack-cursus je eigen site online zet, geef je hem om dezelfde reden een eigen gebruiker.

Er gaat iets mis​

Permission denied​

touch: cannot touch '/etc/test.txt': Permission denied

Oorzaak: jij hebt op die plek niet het recht dat het nodig heeft: hier schrijven in een map van root.

Oplossing: werk in je thuismap. Moet het echt in /etc, dan doe je het als beheerder met sudo; dat leer je in 6.1 Programma's installeren. De oefenterminal kent sudo niet.

Cannot open directory​

ls: cannot open directory '/root': Permission denied

Oorzaak: de thuismap van root heeft drwx------: alleen root mag erin kijken.

Oplossing: geen. Hier is niets mis: dit is wat rechten doen.

Je kent nu de . Vanaf hier werk je in Linux op je eigen computer: 5.1 WSL installeren.