Forum Linux.debian/ubuntu Nextcloud et variables d’environnement

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
27
sept.
2026

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  (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  . É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  (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  . É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  . É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  . É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  . É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 :

              This ensures config.php — which contains database credentials, secret keys, and other sensitive values — is not accessible via HTTP even in the event of a web server misconfiguration.
               
              Cela garantit que le fichier config.php — qui contient les identifiants de base de données, les clés secrètes et d'autres données sensibles — ne soit pas accessible via HTTP, même en cas de mauvaise configuration du serveur web.

              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  . É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  . É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  . É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.