You are not logged in.
J'ai pris la dernire nightly dispo pour tester, et j'ai ce message sur la page principale
Web server root directory configuration is not safe as it permits access to non-public files. See installation documentation for more details.
je n'arrive pas trop a comprendre ce que je suis censé corriger.
surtout que j'ai rien changer depuis le debut que je fait des test avec glpi, et c'est la premiere fois que j'ai ce message
une idée de ce que je doit corriger ?
je trouve rien relatif a ce message dans la doc ou ailleur.
Offline
Bonjour Chico008,
Tu trouveras la réponse dans ce PR de la DocInstall ... pas facile à trouver (depuis un rebond dans GitHub... bref)
https://glpi-install--74.org.readthedoc … web-server
J'ai un (tout petit) peu galéré, mais dès qu'il faut changer des années d'habitudes bien ancrées, on oublie souvent le fameux " RTFM "
:-)
Creuser, creuser... creuser.
GLPI 10.0.16 [ Linux el 9.4 | Apache/2.4.xx | mysql 15.1 MariaDB 10.5.xx | PHP 8.3.x ] - Apache HTTPS r-proxy [ Linux el 9.4 | Apache/2.4.xx ]
GLPI Inventory 1.3.5 | Data Injection 2.13.5 | Treeview (Arborescence) 1.10.2 | Behaviors (Comportements) 2.7.3
-- Any exchange not written in French comes from an automatic translation. --
Offline
Ce serait le require all granted
mais de mon coté j'ai une authentification SSO avec GSSAPI, et un require valid user
ce qui fait qu'un anonyme hors de notre domaine n'accède pas au site de toute facon
et effectivement meme en cherchant dans la doc, j'avais pas trouver cette partie de conf apache
J'ai quand meme essayer d'ajouter les location match, require all granted, et les rewrite, mais ca n'a rien changer, meme apres reboot du serveur et re-authentification, j'ai toujours le meme message qui apparait.
Last edited by Chico008 (2023-03-24 15:17:08)
Offline
Yep,
Tu as bien vu que le DocumentRoot préconisé est :
/var/www/glpi/public
et non plus :
/var/www/html/glpi/
Donc le tar doit être décompressé dans
/var/www/
Creuser, creuser... creuser.
GLPI 10.0.16 [ Linux el 9.4 | Apache/2.4.xx | mysql 15.1 MariaDB 10.5.xx | PHP 8.3.x ] - Apache HTTPS r-proxy [ Linux el 9.4 | Apache/2.4.xx ]
GLPI Inventory 1.3.5 | Data Injection 2.13.5 | Treeview (Arborescence) 1.10.2 | Behaviors (Comportements) 2.7.3
-- Any exchange not written in French comes from an automatic translation. --
Offline
de mon coté je decompresse mon tar dans /var/www
sur mon site le document root etait /var/www/glpi et ca marche
si je change pour mettre /var/www/glpi/public
en documentroot et en <directory ...>
si j'essaie d'accer au site, je suis rediriger sur http://site.glpi/front/central.php et je prend une erreur 404
avec un autre navigateur, je suis rediriger sur http://site.glpi/front/login.php et idem, erreur 404
edit : ok, c'est bon, j'avais oublier de remettre les location et rewrite >_<
par contre si je fait ca, les agents windows en place ne peuvent plus contacter le serveur pour remonter leurs inventaire
coté agent :
Fri Mar 24 14:54:21 2023][error] [http client] authentication required, no credentials available
[Fri Mar 24 14:54:21 2023][error] [http client] unexpected content, starting with: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
[Fri Mar 24 14:54:21 2023][error] No supported answer from server at http://site.glpi/plugins/glpiinventory/
y'a un truc qui doit clocher avec les locations match
dans ma conf j'avais ajouter un <directory ...> specifique au glpiinventory qui ne demandait pas de passer par l'authentification sso.
Last edited by Chico008 (2023-03-24 15:58:00)
Offline
Re bonjour / bonsoir Chico008,
Je sais que chaque installation a ces spécificités, mais pour ma part (avec un environnement de type RHEL 9.x) voilà le " walkthrough " de base :
curl -LO https://nightly.glpi-project.org/glpi/10.0-[latest-git].tar.gz
systemctl stop httpd.service php-fpm.service crond.service
systemctl --no-pager -l status httpd.service php-fpm.service crond.service
tar -xvzf 10.0-[latest-git].tar.gz -C /var/www/
cat > /var/www/glpi/config/local_define.php << ENDOFFILE
<?php
// Use system cron
define('GLPI_SYSTEM_CRON', true);
ENDOFFILE
chown -R root:root /var/www/glpi/
chcon -R system_u:object_r:httpd_sys_content_t:s0 /var/www/glpi/
chown apache:apache /var/www/glpi/config/
chcon system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/glpi/config/
chown -R apache:apache /var/www/glpi/files/
chcon -R system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/glpi/files/
chown apache:apache /var/www/glpi/marketplace/
chcon system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/glpi/marketplace/
cat > /etc/httpd/conf.d/glpi.conf << ENDOFFILE
<VirtualHost *:80>
ServerName glpi.domain.tld
DocumentRoot /var/www/glpi/public
<LocationMatch "(?i)^(?!/\.|\.php|/config/|/files/|(/(marketplace|plugins)/[^/]+)?(/node_modules/|/vendor/))(?<PATH>((/(marketplace|plugins)/[^/]+)?/public/.+|.+\.(html?|js|css|gif|jpe?g|png|svg|mp3|ogg|wav|mp4|ogm|ogv|webm|eot|otf|ttf|woff2?)|/(marketplace|plugins)/[^/]+/(?!composer\.json|package\.json|package-lock\.json).+\.json|.*/favicon.ico))$">
# Use default handler for safe static files, and fallback to GLPI router when file not exists.
Alias "/var/www/glpi%{env:MATCH_PATH}"
FallbackResource /index.php
</LocationMatch>
<Directory /var/www/glpi/public>
Require all granted
RewriteEngine On
# Redirect all requests to GLPI router, unless file exists.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName sub-domain-for-agent.domain.tld
DocumentRoot /var/www/glpi/marketplace/glpiinventory
</VirtualHost>
ENDOFFILE
chown -v root:root /etc/httpd/conf.d/glpi.conf
chcon -v system_u:object_r:httpd_config_t:s0 /etc/httpd/conf.d/glpi.conf
apachectl configtest
cat > /etc/cron.d/glpi << ENDOFFILE
# GLPI core
# Run cron to execute task even when no user connected
* * * * * apache /usr/bin/php /var/www/glpi/front/cron.php
ENDOFFILE
chmod 0644 /etc/cron.d/glpi
chown root:root /etc/cron.d/glpi
chcon system_u:object_r:system_cron_spool_t:s0 /etc/cron.d/glpi
cat > /etc/logrotate.d/glpi << ENDOFFILE
# Rotate GLPI logs daily, only if not empty
# Save 14 days old logs under compressed mode
/var/log/glpi/*.log {
su apache apache
daily
rotate 14
compress
notifempty
missingok
create 644 apache apache
}
ENDOFFILE
chmod 0644 /etc/logrotate.d/glpi
chown root:root /etc/logrotate.d/glpi
chcon system_u:object_r:etc_t:s0 /etc/logrotate.d/glpi
systemctl start httpd.service php-fpm.service crond.service
systemctl --no-pager -l status httpd.service php-fpm.service crond.service
Après, mes frontaux pulbics sont toujours des reverse-proxy Apache qui font la réécriture en HTTPS et pointent vers leurs GLPI-Backend aussi sous Apache, en HTTP.
Les GLPI-Agent passent par une URL spécifique, tamisée par le reverse-proxy avant d'être envoyée au
DocumentRoot /var/www/glpi/marketplace/glpiinventory
my two cents
Creuser, creuser... creuser.
GLPI 10.0.16 [ Linux el 9.4 | Apache/2.4.xx | mysql 15.1 MariaDB 10.5.xx | PHP 8.3.x ] - Apache HTTPS r-proxy [ Linux el 9.4 | Apache/2.4.xx ]
GLPI Inventory 1.3.5 | Data Injection 2.13.5 | Treeview (Arborescence) 1.10.2 | Behaviors (Comportements) 2.7.3
-- Any exchange not written in French comes from an automatic translation. --
Offline
On a pas de reverse de notre coté, et pour le site principal on fait du SSO
sur ma conf, j'ai un SSO activé pour le site principa, et un simple require all granted pour l'accès au plugins/glpiinventory par les agent, pas d'alias de site
sur ma conf apache, j'ai un directory correspondant au site, qui lui a une conf en SSO
et un autre directory, pour le plugins/glpiinventory, pour les agent, qui a un simple require all granted
problème, si je met la conf complète vers le public (avec les locationmatch, rewrite, etc), le site principal marche, mais les agents ne passent plus.
je suis pas asser calé en conf apache (j'avais deja galerer pour faire fonctionner le SSO + conf pour les agents.) pour faire cohabiter la nouvelle conf avec une qui marcherait avec mes agents, sans être obliger de redéployer tout les agents (ce qui n'est plus envisageable)
Offline
Je remonte un peu le sujet
Sortie de la 10.0.7 officielle tout a l'heure
installé et en fonction
mais toujours le warning, et toujours impossible de faire en sorte d'avoir le site sur le dossier ../public/ (avec l'index qui fait routeur avec SSO)
et la partie agent qui tape dans le plugins.
soit j'ai les 2, mais le warning
soit j'ai le site sans warning, mais les agents ne peuvent plus contacter le serveur pour remonter leur inventaires.
rappel de ma conf
document root / var/www/glpi
une directive directory sur ce dossier avec conf SSO
une directive sur el dossier /plugins/glpiinventory/ sans SSO pour les agents.
Si quelqu'un a une solution, je suis preneur.
Offline
Solution trouvé via demande sur le Github
AliasMatch "^/(plugins/glpiinventory/(index\.php)?)$" "/var/www/glpi/$1"
a mettre avant les Directory ou Location
Offline
Bonsoir Chico008,
Désolé de ne pas avoir pu aider pour la SSO... sujet pas pratiqué dans mon périmètre.
Le principale est que la solution soit apparue, mais je n'aurai pas pensé à un regex AliasMatch !.
Creuser, creuser... creuser.
GLPI 10.0.16 [ Linux el 9.4 | Apache/2.4.xx | mysql 15.1 MariaDB 10.5.xx | PHP 8.3.x ] - Apache HTTPS r-proxy [ Linux el 9.4 | Apache/2.4.xx ]
GLPI Inventory 1.3.5 | Data Injection 2.13.5 | Treeview (Arborescence) 1.10.2 | Behaviors (Comportements) 2.7.3
-- Any exchange not written in French comes from an automatic translation. --
Offline
de mon coter si j'avais pas de reponse j'allais tenter un lien symbolique du dossier public vers le dossier plugins
en theorie ca marcherait aussi (apache pouvant suivre les liens symbolique si on lui indique), mais du coup pas tester car l'alias fonctionne.
n'etant pas a l'aise avec les regex et la conf apache avancée, je l'aurais pas trouver.
Offline