Bestandsrechten (Drupal)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Map sites/all/translations moet beschrijfbaar zijn door derden. Anders krijg je deze foutmelding

Het is belangrijk om te weten hoe rechten rondom bestanden en mappen in een Drupal-installatie ingesteld moeten zijn. Dat kan veel frustratie schelen.

  • Doorgaans zal de webserver onder een ander account draaien dan 'ik' of de beheerder. Daardoor valt het in de categorie overig. Bij het instellen van rechten, heb je drie entiteiten: Eigenaar, Groep en Overig/Other. Het gaat in dit hoofdstuk alleen om deze laatste entiteit.
  • Mappen moeten altijd executeerbaar zijn, anders werkt commando cd niet

Locaties systeemmappen

Drupal 7 - en waarschijnlijk ook Drupal 8:

  • Public file system path: sites/default/files
  • Private file system path: sites/default/files_private
  • Temporary directory: /tmp
  • Ctools CSS Cache ctools/css: sites/default/files/ctools/css
  • Vertalingen: sites/all/translations

Map files

  • Mappen moeten altijd beschrijfbaar en executeerbaar zijn
  • Bestanden moeten beschrijfbaar zijn
  • Bestanden hoeven waarschijnlijk niet executeerbaar zijn

Wat in ieder geval werkt:

sudo chmod -R 707 /home/.../files

Maar waarschijnlijk beter:

sudo chmod -R 707 $(find $wortel/sites/default/files -type d)
sudo chmod -R 606 $(find $wortel/sites/default/files -type f)

Map modules

De mappen sites/all/modules en sites/default/modules hoeven niet beschijfbaar te zijn voor derden. In dat geval moet drush als beheerder worden uitgevoerd, en da's een prima keuze

Map tmp

Zie Tmp-map (Drupal)

Zie ook

Bronnen

Appendix: Rechten automatisch bijwerken

Er zitten nog wat tekortkomingen in dit script, maar het werkt niet onaardig:

	####################################################################
	# Bestandsrechten fixen
	####################################################################
	#
	# Dit script is geschikt voor Drupal 7 & 8
	# 
	# Drupal 8: Er moet iets gefixet worden na 'drush si', want het theme 
	# komt niet uit de verf, en af en toe verschijnt er een foutmelding 
	# zoals:
	#
	#    The specified file temporary://fileFZanvi could not be copied because 
	#    the destination directory is not properly configured. This may be 
	#    caused by a problem with file or directory permissions. More 
	#    information is available in the system log.

	# Eigenaar bijwerken
	######################################################################
	#
	sudo chown -R $eigenaar $wortel/*
	sudo chgrp -R $eigenaar $wortel/*
	sudo chown -R $eigenaar $wortel/.*
	sudo chgrp -R $eigenaar $wortel/.*

	# Mappen (algemeen)
	######################################################################
	# 'Other' moeten mappen kunnen executeren, anders werkt 'cd' niet
	#
	# * Eigenaar: mag alles (7)
	# * Group: mag nix
	# * Other: Lezen & executeren (x-x - 5)
	#
	sudo chmod -R 705 $(find $wortel -type d)

	# Bestanden (algemeen)
	######################################################################
	# * Eigenaar: Lezen & schrijven. Uitvoeren niet nodig
	# * Groep: Mag niets
	# * Other: Lezen. Niet schrijven of uitvoeren want veiligheidsprobleem
	#
	# Dit geldt ook voor .htaccess
	#
	# Dit geeft foutmeldingen, omdat chmod niet overweg kan met spaties:
	# Die belanden op een aparte regel.
	# Moet ik escapen op een of andere manier
	#
	sudo chmod -R 604 $(find $wortel -type f)

	# Map 'files'
	######################################################################
	#
	# Drupal/webserver gebruikt deze map om bestanden te plaatsen
	#
	# * Mappen - Other: Lezen, schrijven, executeren → 707
	# * Bestanden - Other: Lezen, schrijven → 606
	#
	sudo chmod -R 707 $(find $wortel/sites/default/files -type d)
	sudo chmod -R 606 $(find $wortel/sites/default/files -type f)

	# Map 'sites/all/translations'
	######################################################################
	#
	# Hier plaatst Drupal gedownloade vertalingen
	#
	# * Mappen - Other: Lezen, schrijven, executeren → 707
	# * Bestanden - Other: Lezen, schrijven → 606
	#
	sudo chmod -R 707 $(find $wortel/sites/all/translations -type d)
	sudo chmod -R 606 $(find $wortel/sites/all/translations -type f)

	# .drush-map fixen
	######################################################################
	# Om de haverklap wordt deze map niet-schrijfbaar voor Drush,
	# misschien door gebruik van 'sudo drush'.
	#
	sudo chown -R $eigenaar /home/$eigenaar/.drush
	sudo chgrp -R $eigenaar /home/$eigenaar/.drush
	sudo chmod -R 705 /home/$eigenaar/.drush