Bestandsrechten (Drupal): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
 
(12 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
 +
[[file:20160111-1556.png|thumb|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.
 
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 dat van de beheerder die de bestanden en mappen heeft aangemaakt. Daardoor moeten rechten doorgaans aangepast worden na bv. een migratie of handmatige aanpassingen. Het webserver-account valt qua bestandsrechten in de categorie <code>other</code>
+
* 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 <code>cd</code> niet
 
* Mappen moeten altijd executeerbaar zijn, anders werkt commando <code>cd</code> niet
  
== Instellingen ==
+
== Locaties systeemmappen ==
 +
 
 +
Drupal 7 - en waarschijnlijk ook Drupal 8:
 +
 
 +
* Public file system path: <code>sites/default/files</code>
 +
* Private file system path: <code>sites/default/files_private</code>
 +
* Temporary directory: <code>/tmp</code>
 +
* Ctools CSS Cache ''ctools/css'': <code>sites/default/files/ctools/css</code>
 +
* Vertalingen: <code>sites/all/translations</code>
  
=== Map <code>files</code> ===
+
== Map files ==
  
 
* Mappen moeten altijd beschrijfbaar en executeerbaar zijn
 
* Mappen moeten altijd beschrijfbaar en executeerbaar zijn
* Bestanden moeten bescrijfbaar zijn.
+
* Bestanden moeten beschrijfbaar zijn
 +
* Bestanden hoeven waarschijnlijk niet executeerbaar zijn
  
 
Wat in ieder geval werkt:
 
Wat in ieder geval werkt:
Regel 15: Regel 26:
 
  sudo chmod -R 707 /home/.../files
 
  sudo chmod -R 707 /home/.../files
  
=== Map <code>modules</code> ===
+
Maar waarschijnlijk beter:
 +
 
 +
<pre>
 +
sudo chmod -R 707 $(find $wortel/sites/default/files -type d)
 +
sudo chmod -R 606 $(find $wortel/sites/default/files -type f)
 +
</pre>
 +
 
 +
== Map modules ==
 +
 
 +
De mappen <code>sites/all/modules</code> en <code>sites/default/modules</code> hoeven niet beschijfbaar te zijn voor derden. In dat geval moet <code>drush</code> als beheerder worden uitgevoerd, en da's een prima keuze
 +
 
 +
== Map tmp ==
 +
 
 +
Zie [[Tmp-map (Drupal)]]
 +
 
 +
== Zie ook ==
 +
 
 +
* [[Tmp-map (Drupal)]]
 +
 
 +
== Bronnen ==
  
De mappen <code>sites/all/modules</code> en </code>sites/default/modules</code> moeten beschijfbaar zijn voor derden ivm. installatie/onderhoud modules middels <code>drush</code>.
+
* https://www.drupal.org/node/447064 - Verwachte locatie ctools/css. De foutmelding zegt namelijk niet waar je moet zijn
  
== Appendix: Script ==
+
== Appendix: Rechten automatisch bijwerken ==
  
Er zitten nog wat fouten in, maar werkt verder niet onaardig:
+
Er zitten nog wat tekortkomingen in dit script, maar het werkt niet onaardig:
  
 
<pre>
 
<pre>
#!/bin/sh
+
####################################################################
#
+
# Bestandsrechten fixen
# Configureer bestandskenmerken van een Drupal-installatie
+
####################################################################
#
+
#
# Aanpak:  
+
# Dit script is geschikt voor Drupal 7 & 8
# 1. Begin met standaard-instellingen
+
#  
# 2. Verfijn
+
# 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
# Variabelen
+
######################################################################
#################################################
+
#
#
+
sudo chown -R $eigenaar $wortel/*
# Gebruik geen ~, want fouten bij gebruik 'sudo'
+
sudo chgrp -R $eigenaar $wortel/*
#
+
sudo chown -R $eigenaar $wortel/.*
map="/home/account/public/example.com/public"
+
sudo chgrp -R $eigenaar $wortel/.*
eigenaar="debaas"
 
  
#################################################
+
# Mappen (algemeen)
# Configureer eigenaar. Soms is dat namelijk root
+
######################################################################
#################################################
+
# 'Other' moeten mappen kunnen executeren, anders werkt 'cd' niet
#
+
#
chown -R $eigenaar $map/*
+
# * Eigenaar: mag alles (7)
chgrp -R $eigenaar $map/*
+
# * Group: mag nix
 +
# * Other: Lezen & executeren (x-x - 5)
 +
#
 +
sudo chmod -R 705 $(find $wortel -type d)
  
#################################################
+
# Bestanden (algemeen)
# Algemeen - Mappen
+
######################################################################
#################################################
+
# * Eigenaar: Lezen & schrijven. Uitvoeren niet nodig
#
+
# * Groep: Mag niets
# Eigennaar mag alles (7)
+
# * Other: Lezen. Niet schrijven of uitvoeren want veiligheidsprobleem
# Group mag nix (0)
+
#
# Other: r-x (5)
+
# Dit geldt ook voor .htaccess
#
+
#
chmod 705 $(find $map -type d)
+
# 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'
# Algemeen - Bestanden
+
######################################################################
#################################################
+
#
#
+
# Drupal/webserver gebruikt deze map om bestanden te plaatsen
# Eigennaar mag alles maar hoeft niet te kunnen executeren (6)
+
#
# Group mag nix (0)
+
# * Mappen - Other: Lezen, schrijven, executeren → 707
# Other mag alleen lezen r-- (4)
+
# * Bestanden - Other: Lezen, schrijven → 606
# Dit geldt ook voor .htaccess
+
#
#
+
sudo chmod -R 707 $(find $wortel/sites/default/files -type d)
# Dit geeft foutmeldingen, omdat chmod niet overweg kan met spaties:
+
sudo chmod -R 606 $(find $wortel/sites/default/files -type f)
# Die belanden op een aparte regel.
 
# Moet ik escapen op een of andere manier
 
#
 
chmod 604 $(find $map -type f)
 
  
#################################################
+
# Map 'sites/all/translations'
# Map 'files'
+
######################################################################
#################################################
+
#
#
+
# Hier plaatst Drupal gedownloade vertalingen
# 'Other' krijgt schrijftoegang op map-niveau
+
#
#
+
# * Mappen - Other: Lezen, schrijven, executeren → 707
chmod 707 $(find $map/sites/default/files -type d)
+
# * 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
# sites/all/modules & sites/default/modules
+
######################################################################
#################################################
+
# Om de haverklap wordt deze map niet-schrijfbaar voor Drush,
#
+
# misschien door gebruik van 'sudo drush'.
# 'Other' krijgt schrijftoegang op map-niveau
+
#
#
+
sudo chown -R $eigenaar /home/$eigenaar/.drush
chmod 707 $(find $map/sites/alles/modules -type d)
+
sudo chgrp -R $eigenaar /home/$eigenaar/.drush
chmod 707 $(find $map/sites/default/modues -type d)
+
sudo chmod -R 705 /home/$eigenaar/.drush
 
</pre>
 
</pre>

Huidige versie van 16 aug 2018 om 19:42

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