Bonjour
En cherchant à durcir la sécurité de mon instance Nextcloud, j'ai trouvé une possibilité qui me plaît bien : déplacer le dossier de configuration en dehors du site pour le rendre plus difficile d'accès.
Mon problème est qu'il me faut ajouter le nouveau chemin d'accès dans une variable d'environnement qui soit accessible dans Apache, et depuis la CLI de www-data pour la commande occ.
Ajouter une Variable d'environnement à Apache, je connais plusieurs moyens de le faire, mais pour la CLI, je suis assez perplexe. je peux tenter de la rendre system-wide, mais serait-il possible de la réserver uniquement à www-data, sachant que je suis sous Debian ?
Merci
# doc ubuntu
Posté par ted (site web personnel) . Évalué à 3 (+1/-0).
https://doc.ubuntu-fr.org/variables_d_environnement#manipuler_les_variables_d_environnement
Tu peux définir ta variable juste avant de lancer occ en la mettant en début de commande. Si c'est trop gênant de le taper à chaque fois tu peux mettre dans dans le .bashrc de ton utilisateur www-data (je ne suis pas sûr que cet utilisateur a un répertoire personnel par défaut, il faudrait alors lui en créer un).
Si dans cette variable il n'y a qu'un chemin, je ne pense pas que ce soit problématique qu'elle soit accessible à tous les utilisateurs.
Un LUG en Lorraine : https://enunclic-cappel.fr
[^] # Re: doc ubuntu
Posté par Arkem . Évalué à 1 (+0/-0).
Merci
C'est vrai que je pourrai l'ajouter à chaque fois, peut-être en la mettant dans un petit script, s'il n'y a pas d'autre moyen.
La doc de Nextcloud conseille de déplacer le dossier car il contient des mots de passes, chiffrés heureusement, mais bon… l'idée était de le rendre aussi peu visible que possible.
Ceci dit, que le chemin soit connu des utilisateurs locaux reste moins gênant que de le rendre potentiellement accessible depuis le web, c'est sûr.
[^] # Re: doc ubuntu
Posté par lolop (site web personnel) . Évalué à 2 (+0/-0).
Genre
alias trucmachin='VAR=xxxxxx /usr/bin/trucmachin'Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: doc ubuntu
Posté par Arkem . Évalué à 2 (+1/-0). Dernière modification le 27 septembre 2026 à 20:29.
Bon, je n'ai pas trouvé le moyen de rendre la variable spécifique à www-data, mais j'ai quelque chose de fonctionnel. Si ça intéresse quelqu'un :
Dans /etc/apache2/envvar, ajouter :
export NEXTCLOUD_CONFIG_DIR=/PATH/TO/CONFIG/DIR
ou mieux, dans /etc/apache2/sites-available/nextcloud.conf, ajouter :
SetEnv NEXTCLOUD_CONFIG_DIR /PATH/TO/CONFIG/DIR
Ça permettra à apache-php d'accéder à la configuration.
Dans /etc/profile ou /etc/profile.d/nextcloud.sh, ajouter :
export NEXTCLOUD_CONFIG_DIR=/PATH/TO/CONFIG/DIR
Pour que la variable d'environnement soit accessible depuis sudo, ajouter dans /etc/sudoers ou /etc/sudoers.d/nextcloud (avec visudo) :
Defaults env_keep += "NEXTCLOUD_CONFIG_DIR"
Comme ça, le programme d'administration occ saura aussi trouver la config.
Enfin, dans /etc/cron.d/nextcloud, ou dans crontab, remplacer la ligne habituelle par :
*/5 * * * * NEXTCLOUD_CONFIG_DIR=/PATH/TO/CONFIG/DIR php -f /var/www/nextcloud/cron.php
Ce qui permet d'améliorer la sécurité du dossier de configuration en le plaçant ailleurs.
[^] # Re: doc ubuntu
Posté par Voltairine . Évalué à 3 (+1/-0). Dernière modification le 28 septembre 2026 à 07:59.
Il suffisait de consulter la doc nextcloud ;-)
Bon je ne vois pas trop ce que cela apporte au niveau sécurité dans cette configuration.
Il me semble qu'il serait plus judicieux dans un premier temps de faire en sorte que les scripts php ne soit pas exécutés par l'utilisateur www-data mais par un utilisateur spécifique et donc utiliser php-fpm avec un pool particulier pour ton instance nextcloud.
Et corriger la tâche cron pour qu'elle ne soit pas exécutée par root (faille de sécurité)
[^] # Re: doc ubuntu
Posté par Arkem . Évalué à 2 (+1/-0).
C'est de là que je suis parti. L'explication pour Apache était bonne, mais c'était moins évident pour la variable CLI (je ne suis pas informaticien, juste passionné d'informatique LIBRE, je précise à tout hazard).
Pour la tâche cron, j'avoue, je me suis planté en le faisant de tête. En fait, j'utilise crontab avec le bon utilisateur. Mais merci de me l'avoir fait remarquer.
[^] # Re: doc ubuntu
Posté par Voltairine . Évalué à 3 (+1/-0).
Oui ta tâche cron doit être exécutée par www-data dans ton cas.
Ce que je voulais surtout mettre en avant c'est le quasi absence de gain de sécurité en déplaçant le fichier config.php.
Comme le dit la documentation de Nextcloud :
Il faut quand même une très très mauvaise configuration du serveur web :
- l'accès au fichier doit être autorisé via une simple requête, ce qui n'est pas le cas par défaut dans Nextcloud (cf le fichier .htacces fourni) ;
- le script config.php ne doit pas être interprété mais servi en en tant que simple fichier texte.
Autant dire qu'à ce stade le serveur est déjà complètement en vrac.
Un truc plus utile est de placer le répertoire data qui contient toutes les données des utilisateurs en dehors du dossier racine web (DocumentRoot dans la configuration d'Apache). Il est également protégé par des directives dans un fichier .htacces, mais là il suffit d'une erreur ou une suppression malheureuse pour laisser l'accès aux documents.
Et je me permet d’insister, tu devrais te renseigner sur l'utilisation de PHP-FPM en lieu et place de l’interpréteur PHP fourni par Apache (libapache2-mod-php). Tu gagnerais beaucoup en sécurité et en performances.
[^] # Re: doc ubuntu
Posté par Arkem . Évalué à 2 (+1/-0).
Merci pour ces recommandations. Je vais m'intéresser de plus prêt à PHP-FPM que j'avais mis de côté pour plus tard. D'après ce que tu dis, ça à l'air très intéressant.
Le dossier data est beaucoup plus simple à déplacer que la config, donc c'est ce que j'ai fait en premier.
Maintenant que la configuration est cachée et que ça marche bien, ça ne sert à rien de la remettre en place, mais je retiens que l'intérêt est minime pour une prochaine fois.
Merci pour tes conseils.
# variable d'environnement dans le service apache/nginx
Posté par bobble bubble . Évalué à 2 (+1/-0).
Tu pourrais ajouter cette variable d'environnement dans le service systemctl qui lance apache : https://serverfault.com/questions/413397/how-to-set-environment-variable-in-systemd-service
[^] # Re: variable d'environnement dans le service apache/nginx
Posté par Arkem . Évalué à 1 (+0/-0).
Normalement, j'hésite à modifier les paramètres de Systemd mais la commande "systemctl edit …" rend les choses moins dérangeantes. C'est une piste intéressante pour rendre la variable spécifique au service d'Apache2. Je vais expérimenter…
Merci.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.