Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1.5.0 - 1.5.1] BUG permissions lors des téléchargements #191

Closed
maximetoma opened this issue Jul 13, 2023 · 16 comments
Closed

[1.5.0 - 1.5.1] BUG permissions lors des téléchargements #191

maximetoma opened this issue Jul 13, 2023 · 16 comments

Comments

@maximetoma
Copy link

Version
GeoNature 2.12.3
Exports 1.5.0

Description du bug
Erreur retournée :
image

Le téléchargement ne veut pas se faire, me donne une erreur 403, avez-vous une idée du problème ? Je suis en admin avec les permissions admin

Logs
Aucun log relevable....

@camillemonchicourt
Copy link
Member

Y a rien dans les logs de GeoNature ?

@gildeluermoz
Copy link
Contributor

C'est pas un PB de droits sur le répertoire où le fichier d'export est écrit ?
Du genre apache n'a pas les droits. S'assurer qu'il y'a bien un
Require all granted sur ce répertoire

@maximetoma
Copy link
Author

@camillemonchicourt non rien de particulier qui s’inscrit quand je fais la manipulation

@gildeluermoz ci-joint mon fichier geonature.conf, je n'arrive pas à régler le pb et je suis pas très fort en apache :)

geonature.txt

@mvergez
Copy link
Collaborator

mvergez commented Aug 2, 2023

Salut !
Peut-être aussi voir si le dossier /home/geonatureadmin/geonature/backend/media/exports a les bons droits linux. Pour voir ça :
ls -l /home/geonatureadmin/geonature/backend/media et voir à qui appartient le dossier exports et si l'utilisateur linux geonatureadmin a bien les droits. Cela permettra de voir aussi si le fichier d'export est présent :)

@lpofredc
Copy link
Contributor

lpofredc commented Aug 2, 2023

Bonjour @maximetoma,
A minima, il semble y avoir un pb sur la config apache sur les lignes:

    <Location /home/geonatureadmin/geonature/backend/media/exports>
      Require all granted
    </Location>

Location concerne les chemins d'url, dans le cas présent, il s'agirait plutôt de Directory

    <Directory /home/geonatureadmin/geonature/backend/media/exports>
      Require all granted
    </Directory>

@lpofredc
Copy link
Contributor

lpofredc commented Aug 2, 2023

Par contre, ton fichier semble contenir d'anciennes config geonature.

Ton bloc

    # ========================== CONFIGURATION GEONATURE ==========================
    ServerName sep-geonature.reserves-naturelles.org
    # ServerAlias sep-geonature.reserves-naturelles.org
    DocumentRoot "/home/geonatureadmin/geonature/frontend/dist"

    IncludeOptional /etc/apache2/conf-available/geonature.conf
    IncludeOptional /etc/apache2/conf-available/usershub.conf

    ErrorLog "/var/log/apache2/geonature_error.log"
    CustomLog "/var/log/apache2/geonature_access.log" combined

    <Location /api>
      ProxyPass http://127.0.0.1:8000/api
      ProxyPassReverse  http://127.0.0.1:8000/api
      Require all granted
    </Location>

    <Location /home/geonatureadmin/geonature/backend/media/exports>
      Require all granted
    </Location>

devrait sans doute plutôt ressembler à ça:

# ========================== CONFIGURATION GEONATURE ==========================
    ServerName sep-geonature.reserves-naturelles.org

    IncludeOptional /etc/apache2/conf-available/geonature.conf
    IncludeOptional /etc/apache2/conf-available/taxhub.conf
    IncludeOptional /etc/apache2/conf-available/usershub.conf

    ErrorLog "/var/log/apache2/geonature_error.log"
    CustomLog "/var/log/apache2/geonature_access.log" combined

@camillemonchicourt
Copy link
Member

camillemonchicourt commented Aug 2, 2023

Le vhost de GeoNature a été beaucoup amélioré et simplifié depuis la version 2.8.0.
Le fichier geonature.conf doit être comme le template : https://github.com/PnX-SI/GeoNature/blob/master/install/assets/vhost_apache.conf, comme indique @lpofredc.

Comme on voit dans celui-ci, il fait appel et inclut le fichier de configuration généré et renseigné automatiquement : https://github.com/PnX-SI/GeoNature/blob/master/install/assets/geonature_apache.conf

Cela a été rappelé dans le changelog de la 2.12.0 :

Il est fortement conseillé d'utiliser la configuration Apache générée par défaut dans /etc/apache2/conf-available/geonature.conf et de l'inclure dans votre vhost (/etc/apache2/sites-available/geonature.conf et/ou /etc/apache2/sites-available/geonature-le-ssl.conf), en suivant la documentation dédiée

Le changelog de la version 1.4.0 du module Export indique aussi d'enlever la conf spécifique au chemin des fichiers exportés, ce que tu ne sembles pas non plus avoir fait :

Le dossier de stockage des exports a été modifié de geonature/backend/static/exports/ à geonature/backend/media/exports/.
La configuration Apache fournie avec GeoNature 2.12 sert directement le dossier media sans passer par gunicorn.
Si vous aviez modifié votre configuration spécifiquement pour le module d’export, il est recommandé de retirer cette partie spécifique au profit de la configuration générique de GeoNature.

@maximetoma
Copy link
Author

maximetoma commented Aug 3, 2023

Merci pour vos retours !

J'avais je crois gardé à l'époque la config précédente en adaptant le code, mais je n'ai pas saisi que on pouvait beaucoup le simplifier :)

Du coup j'ai d'un côté :

# /etc/apache2/sites-available/geonature.conf
ServerName sep-geonature.reserves-naturelles.org

IncludeOptional /etc/apache2/conf-available/geonature.conf
IncludeOptional /etc/apache2/conf-available/taxhub.conf
IncludeOptional /etc/apache2/conf-available/usershub.conf

ErrorLog "/var/log/apache2/geonature_error.log"
CustomLog "/var/log/apache2/geonature_access.log" combined

et

# /etc/apache2/conf-available/geonature.conf
# Alias: first have precedence, so static & media aliases must be defined before /geonature alias

Alias "/api/media" "/home/geonatureadmin/geonature/backend/media"
<Directory "/home/geonatureadmin/geonature/backend/media">
    Require all granted
    AllowOverride None
    Options -Indexes
</Directory>

Alias "/api/static" "/home/geonatureadmin/geonature/backend/static"
<Directory "/home/geonatureadmin/geonature/backend/static">
    Require all granted
    AllowOverride None
    Options -Indexes
</Directory>

# CUSTOM STATIC FILE
RewriteEngine On
# Define STATIC_FILE environment variable
RewriteRule "^/api/static/(.*)$" - [env=STATIC_FILE:$1,chain]
# Test if custom static file exists (not tested for non static file thanks to previous chain flag)
RewriteCond "/home/geonatureadmin/geonature/custom/%{ENV:STATIC_FILE}" -f
# If so, redirect to custom static file instead of default static file
RewriteRule "^/api/static/(.*)$" "/home/geonatureadmin/geonature/custom/$1" [L]
<Directory "/home/geonatureadmin/geonature/custom">
    Require all granted
    AllowOverride None
    Options -Indexes
</Directory>

AliasMatch "^(.*)$" "/home/geonatureadmin/geonature/frontend/dist$1"
<Directory "/home/geonatureadmin/geonature/frontend/dist">
    Require all granted
</Directory>

<Location "/api">
    ProxyPass http://127.0.0.1:8000/api
    ProxyPassReverse http://127.0.0.1:8000/api
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE application/json
        AddOutputFilterByType DEFLATE application/geo+json
    </IfModule>
</Location>

# Location: last have precedence so next blocks must be located after /api location block
<Location "/api/media">
    ProxyPass !
</Location>
<Location "/api/static">
    ProxyPass !
</Location>

Pour le changelog d'Export, je crois de souvenir que je n'avais rien à modifier (je n'avais rien changé à la config de base)... Ou alors je n'ai pas compris...

@mvergez pour les permissions, j'ai

drwxrwxrwx 4 geonatureadmin geonatureadmin 4096  2 août  16:55 exports

Mais avec toutes ces modifications (en faisant un sudo systemctl reload apache2), j'ai toujours le même soucis...

@maximetoma
Copy link
Author

Mon fichier geonature/config/exports_config.toml se résume à

## Nombre de jours après lequel les fichiers exportés sont supprimés automatiquement sur le serveur
nb_days_keep_file = 15

@maximetoma
Copy link
Author

maximetoma commented Aug 3, 2023

[EDIT] En redémarrant le service geonature_worker, les exports publics fonctionnent

Autrement, les exports privés restent avec la même erreur 403 Forbiden

Petite précision, l'erreur se fait après avoir sélectionné le format de fichier, validé la licence et cliquer sur "OK". Le fichier d'export n'est pas généré et le mail n'est pas envoyé

@maximetoma maximetoma changed the title [1.5.0] BUG permissions lors des téléchargements [1.5.0 - 1.5.1] BUG permissions lors des téléchargements Aug 3, 2023
@gildeluermoz
Copy link
Contributor

du coup je ne comprends pas si ton soucis est résolu.

Si ton geonature est en https, penses bien à vérifier que le  IncludeOptional /etc/apache2/conf-available/geonature.conf est présent dans le fichier de conf apache pour le https, par exemple /etc/apache2/sites-available/geonature-le-ssl.conf et pas seulement dans /etc/apache2/sites-available/geonature.conf

@maximetoma
Copy link
Author

@gildeluermoz Non j'ai toujours le problème sur mes exports privés
L'IncludeOptional est bien dans le fichier geonature-le-ssl.conf

@camillemonchicourt
Copy link
Member

OK je viens de tester et de reproduire sur le serveur de DEMO. Quand un export n'est pas PUBLIC et que mon utilisateur est bien associé à l'export, j'ai la même erreur que tu as mentionné :

image

Donc ça semble un bug de la version 1.5.0 du module EXPORT...

Par contre je ne reproduis pas en production sur notre serveur du PNE.

@TheoLechemia
Copy link
Member

TheoLechemia commented Aug 8, 2023

Fixé par ce commit : 1002177
a venir dans la 1.5.1
(et normal que sur notre Prod ça fonctionne, on est déjà sur la branche "hot-fixe 1.5"

@maximetoma
Copy link
Author

Un grand merci @TheoLechemia ça fonctionne :D

@camillemonchicourt
Copy link
Member

Une partie des soucis était liées au fait que la configuration Apache de cette instance n'avait pas été mis à jour.
Une autre partie était un soucis de permissions corrigé dans la 1.5.2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants