Ga naar inhoud

Workflow: Bestanden & Rechtenbeheer (Universeel)

Deze handleiding legt uit hoe je bestanden en mappen overal in het systeem de juiste eigenaar, groep en rechten geeft, en hoe je zorgt dat toekomstige bestanden automatisch dezelfde instellingen erven.
Als voorbeeld wordt /var/www gebruikt, maar je kunt elke andere map of bestand invullen.


πŸ”Ή 1. Eigenaar & Groep instellen

Met chown stel je eigenaar en groep in.

sudo chown root:www-data /pad/naar/map

πŸ‘‰ Vervang /pad/naar/map door jouw doelmap, bijvoorbeeld /var/www.
πŸ‘‰ Betekenis: - root = eigenaar (mag altijd alles) - www-data = groep (bijv. webservergroep of projectgroep)


πŸ”Ή 2. Basisrechten instellen

Met chmod stel je de rechten in. Voor samenwerkingsmappen is vaak 2775 geschikt:

sudo chmod 2775 /pad/naar/map

πŸ‘‰ Betekenis van 2775: - 2 = setgid bit β†’ nieuwe bestanden/mappen krijgen automatisch de groep van de bovenliggende map. - 7 = eigenaar (root) mag lezen, schrijven, uitvoeren. - 7 = groep (bijv. www-data) mag lezen, schrijven, uitvoeren. - 5 = anderen mogen lezen en uitvoeren.

Controleer met:

ls -ld /pad/naar/map

πŸ”Ή 3. Onderliggende bestanden/mappen corrigeren

Om bestaande bestanden en mappen onder de doelmap dezelfde groep en rechten te geven:

sudo chown -R root:www-data /pad/naar/map
sudo chmod -R g+rwX /pad/naar/map

πŸ‘‰ Uitleg: - -R = recursief (alle submappen/bestanden) - g+rwX = geeft groep schrijfrechten + execute (X = alleen op mappen en uitvoerbare bestanden).


πŸ”Ή 4. Automatisch juiste rechten voor nieuwe bestanden

Dankzij het setgid-bit (chmod 2775) erven nieuwe bestanden de groep van de map.
Maar de rechten hangen ook af van de umask van de gebruiker.

Stel een umask in zodat bestanden altijd 664 en mappen 775 krijgen:

In /etc/profile of ~/.bashrc:

umask 002

πŸ‘‰ Betekenis: - Bestanden: 666 - 002 = 664 (rw-rw-r--) - Mappen: 777 - 002 = 775 (rwxrwxr-x)


πŸ”Ή 5. Extra mogelijkheden

a) ACL’s (Access Control Lists)

Met ACL’s kun je nog fijnmaziger rechten toekennen.
Voorbeeld: groep www-data mag altijd lezen/schrijven in een map:

sudo apt install acl   # als nog niet geΓ―nstalleerd
sudo setfacl -R -m g:www-data:rwx /pad/naar/map
sudo setfacl -dR -m g:www-data:rwx /pad/naar/map

πŸ‘‰ -m = toevoegen van rechten
πŸ‘‰ -d = default (geldt voor toekomstige bestanden)

Controleer ACL’s:

getfacl /pad/naar/map

b) Alleen-lezen toegang voor anderen

Als alleen de groep mag schrijven maar anderen alleen mogen lezen, gebruik je 775.
πŸ‘‰ Dan hebben β€œanderen” r-x rechten.

c) Specifieke submap voor uploads of gedeeld gebruik

sudo mkdir /pad/naar/map/uploads
sudo chown root:www-data /pad/naar/map/uploads
sudo chmod 2775 /pad/naar/map/uploads

Alle leden van groep www-data kunnen nu in uploads bestanden zetten.


πŸ”Ή 6. Belangrijkste commando’s uitgelegd

  • chown gebruiker:groep bestand
    β†’ Wijzigt eigenaar en groep.

  • chmod 2775 map
    β†’ Past rechten aan + setgid zodat nieuwe bestanden de groep erven.

  • umask 002
    β†’ Zorgt dat nieuwe bestanden altijd groep-schrijfrechten krijgen.

  • setfacl / getfacl
    β†’ Geavanceerd rechtenbeheer met ACL’s.


βœ… Samenvatting Workflow

  1. Zet eigenaar & groep: chown root:www-data /pad/naar/map
  2. Zet rechten & setgid: chmod 2775 /pad/naar/map
  3. Corrigeer alles eronder: chown -R root:www-data /pad/naar/map && chmod -R g+rwX /pad/naar/map
  4. Stel umask in: umask 002
  5. (Optioneel) Gebruik ACL’s voor nog meer controle.

πŸ”§ Bonus: Bash-script

Dit script pas je toe op een map naar keuze:

#!/bin/bash
# Gebruik: sudo ./rechten_workflow.sh /pad/naar/map gebruiker groep

MAP=$1
USER=$2
GROUP=$3

if [ -z "$MAP" ] || [ -z "$USER" ] || [ -z "$GROUP" ]; then
  echo "Gebruik: $0 /pad/naar/map gebruiker groep"
  exit 1
fi

echo "[INFO] Instellen eigenaar/groep..."
sudo chown -R $USER:$GROUP $MAP

echo "[INFO] Instellen rechten & setgid..."
sudo chmod 2775 $MAP

echo "[INFO] Corrigeren onderliggende bestanden..."
sudo chmod -R g+rwX $MAP

echo "[INFO] Klaar. Controleer met: ls -ld $MAP"

Opslaan als rechten_workflow.sh, uitvoerbaar maken met:

chmod +x rechten_workflow.sh

En uitvoeren bijvoorbeeld:

sudo ./rechten_workflow.sh /var/www root www-data