V15 bonne pratique - Permissions fichiers/dossiers (chmod)

Bonjour à tous,
Je relance ma petite réflexion sur les droits des fichiers et dossiers dans une installation Dolibarr V15 sous Linux.
J’avais fait un topic sur les droits à appliquer sur la V14 afin de ne plus avoir de warning dans la partie « Permissions sur les fichiers du répertoire racine » de la page Infos sécurité : lien vers le topics

Je viens de passer une V14.0.5 en V15.0.3 et j’ai de nouveau des warnings sur cette partie.
pour rappel voici les droits que j’applique

sudo chmod -R a-x /var/www/my-dolibarr/htdocs/
sudo chmod -R a+X /var/www/my-dolibarr/htdocs/
sudo chmod -R 400 /var/www/my-dolibarr/documents/install.lock
sudo chmod -R 400 /var/www/my-dolibarr/htdocs/conf/conf.php
sudo chmod -R 755 /var/www/my-dolibarr/htdocs/custom/

et voici le warning que j’ai :

Permissions sur les fichiers du répertoire racine : Certains fichiers ou répertoires ne sont pas en mode lecture seule
Exemple: install/doctemplates/adherent/1, install/doctemplates/adherent/2, install/doctemplates/adherent/3, install/doctemplates/adherent/4, core/filemanagerdol/browser/default/images/icons/32, includes/stripe/stripe-php/lib/ApiOperations, includes/sabre/sabre/http/lib/Auth, includes/sabre/sabre/dav/tests/Sabre/DAV/Auth, includes/sabre/sabre/dav/lib/DAV/Auth, includes/sabre/sabre/http/tests/HTTP/Auth, includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth, includes/phpoffice/PhpSpreadsheet/Worksheet/AutoFilter, includes/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/AutoFilter, includes/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter, includes/phpoffice/PhpSpreadsheet/Shared/Escher/DggContainer/BstoreContainer/BSE, includes/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DggContainer/BstoreContainer/BSE, includes/phpoffice/phpexcel/Classes/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE, includes/sabre/sabre/dav/lib/CalDAV/Backend, includes/sabre/sabre/dav/lib/DAV/Locks/Backend, includes/sabre/sabre/dav/tests/Sabre/DAV/PropertyStorage/Backend, includes/sabre/sabre/dav/tests/Sabre/CardDAV/Backend, includes/sabre/sabre/dav/lib/DAV/PropertyStorage/Backend ...

Avez-vous une idée de ce qu’il faut ajouter dans cette version pour avoir un sans-fautes ? :innocent:

Merci par avance pour le boulot phénoménal que vous réalisez :+1:

1 « J'aime »

Bonjour,

Je viens de passer en V16/php8.1 et j’ai les mêmes recommandations en permission et malheureusement je ne suis pas assez calé pour t’apporter une réponse. Je me disais que tu avais peut-être réussi à te dépatouiller, ou que tout du moins ma réponse remettrait la question au goût du jour.

Du coup me voilà, mais pas en sauveur! :grin:

Hello,
Même constat de mon côté.
J’avais commencé à mettre en place les CHMOD sur les différents chemins indiqués.
Mais à mesure qu’on avance dans tout ça, on tombe sur le dossier admin/ et résultat, plus moyen d’accéder à l’administration…
Donc j’ai rétabli en 755 ce dossier et tous les précédents également.

Bonjour,

Dans le premier post, on peut lire les nouveaux droits appliquer, mais pas ceux du masque. A priori, en lisant le message d’erreur, je pense qu’un droit d’écriture est laissé sur le répertoire htdocs.

Bref, essayez ceci :

sudo chmod -R 555 /var/www/my-dolibarr/htdocs/
sudo chmod -R 400 /var/www/my-dolibarr/documents/install.lock
sudo chmod -R 400 /var/www/my-dolibarr/htdocs/conf/conf.php
sudo chmod -R 755 /var/www/my-dolibarr/htdocs/custom/

Bonne journée

Attention à ne pas mettre le droit ‹ x › aux fichiers inutilement mais seulement aux répertoires donc il faudrait revoir les commandes.

1 « J'aime »

Bonjour,

Il faut utiliser la commande find pour faire ce type de modifications sur les droits et ne pas transformer tous les fichiers en executables.

Par exemple :

Pour modifier le droit des répertoires en 555 récursivement dans /var/www/my-dolibarr/htdocs/

find /var/www/my-dolibarr/htdocs/ \! -perm 555 -type d -exec chmod 0555 {} \;

Pour modifier le droits des fichiers en 444 récursivement dans /var/www/my-dolibarr/htdocs/

find /var/www/my-dolibarr/htdocs/ \! -perm 444 -type f -exec chmod 0444 {} \;

1 « J'aime »

Je ne vois pas très bien l’utilité de supprimer le droit d’exécution puisque les fichiers php ne sont pas des exécutables, mais le plus simple sersit donc de fsire un chmod 644 au lieu du 755

Ne mettez JAMAIS, JAMAIS, JAMAIS,… un fichier exécutable qui n’a aucun intérêt de l’être

1/ Déjà pour commencer, je suis désolé mais il faut que j’en parle parce que c’est la réalité. Mettre un fichier exécutable PHP sur un serveur est un signe que la personne qui l’a mis ne maîtrise rien du tout.

Mettre un droit d’exécution sur un fichier PHP est une horreur faite par les gens sous windows. On ne le voit pas forcément quand on utilise ce système (windows) mais si on utilise un vrai système comme moi à savoir Linux, c’est la première chose qu’on voit, des fichiers tout « vert » (les exécutables sont affichés en vert très souvent).

2/ J’en profite pour parler généralement d’un autre problème qui vient avec l’incompétence du premier problème : la 2ème horreur que les gens sous windows font subir aux gens sous Linux est qu’il faut 2 caractères pour passer à la ligne dans un ficher texte sous windows et un seul sous Linux. Or sous Linux, le caractère de windows est parfois visible, il y en a partout, insupportable.

3/ Donc merci à ceux qui utilisent ce système (windows) et qui essayent de faire de l’administration système Linux de faire les choses proprement ou alors ne faites rien.

4/ On ne met un droit exécutable que sur les fichiers/scripts qui peuvent se lancer par eux-même. Parmi des fichiers, on les repère facilement. Donc si un fichier traîne par erreur parmi des fichiers PHP, on le trouve tout de suite. On peut alors repérer un mauvais fichier.

5/ Un fichier qui a l’extension PHP n’est pas forcément un fichier PHP. Je peux tout à faire renommer un script en .PHP, le rendre exécutable. ./jenicktonsite.php alors que en réalité, c’est un script bash ou même un réel exécutable.

Donc, non, pas de x ou 5 ou 7 sur un fichier PHP. Essayez de rendre le système propre, c’est plus facile ensuite pour maîtriser l’installation.

1 « J'aime »

Merci pour vos remarques.
Comme la documentation de Dolibarr n’est pas très claire sur ce sujet, le présent topics cherche à réfléchir sur les droits à mettre en place pour limiter les risques et être conforme sur la partie « Permissions sur les fichiers du répertoire racine » de la page Infos sécurité.
Comme vous semblez très au point sur la configuration Linux pouvez-vous nous résumer les droits à mettre en place sur l’ensemble des fichiers/dossiers ?
Cela sera utile pour tout le monde et sera bien plus facile à lire dans le topics si tout est résumé dans un seul message :wink:
Merci par avance

J’avais pensé à mettre au point un genre de script php ou shell pour faire un contrôle de base de l’installation. Il doit exister effectivement une commande magique pour régler les droits d’accès.

Normalement, il ne devrait rien y avoir à réparer dans la mesure où par défaut, le contenu de l’archive a déjà les bons droits mais s’il vient à l’idée de décompresser sous windows pour de transférer les fichiers ensuite alors on va déjà vers les problèmes.

Pour ma part, l’installation de mes instances se fait via un git clone -b pour récupère la version qui me sert de master et ensuite un script qui met en place la nouvelle instance en se basent sur cette install de réf.