[SPIP4.1] Impossible de modifer le mot de passe des auteurs / Pas de cle secrete disponible

Salut,

comme discuté rapidement sur IRC l’autre jour, je ne peux plus modifier le mot de passe des auteurs existants sur un site. Je peux créer de nouveaux auteurs sans mot de passe, mais impossible de créer un mot de passe ensuite.

Dans le privé, le message d’erreur est :

Impossible de modifier le mot de passe. Veuillez recommencer.

Dans les logs, j’ai :

2022-05-04 11:28:01 XX.XX.XX.XX (pid 47017) :Pri:ERREUR: Pas de cle secrete disponible (fichier config/cle.php absent ?) un des webmestres #1 doit se connecter pour restaurer son backup des cles

alors que le fichier est bien présent et les auteurs déjà existants peuvent se connecter sans problème.

C’est un site qui a changé de dossier : je l’ai installé dans un dossier avec une url de dev puis je l’ai déplacé dans le dossier définitif (sur le même hébergement) accessible via le domaine de prod.
Il y a eu un changement de config PHP entre les 2 mais Sodium 1.0.18 est bien activé sur la nouvelle config (testé en PHP 7.4/8.0/8.1).

J’ai regardé le log https://git.spip.net/spip/spip/commit/c31437f00aafe715de316cb01cbdd2676480990f qui parle de régénérer la clé mais je ne vois pas comment faire (j’ai bien backup_cles dans la base).

Est-ce que je dois régénérer la cle secrète ? Si oui, comment ?

merci

Bonjour,
Est-ce un comportement nouveau en spip 4.1 ou bien un bug?
Un banal changement de dossier (ou de domaine ?) planterait les changements de mot de passe ?

Non non, changer de dossier n’altère pas le comportement (à partir du moment où le fichier config/cles.php suit la base de données qui lui est associée).

Je ne sais pas ce qu’il s’est passé pour @jeanmarie exactement.

Du coup, c’est quoi la démarche pour restaurer mon backup comme indiqué dans le log ?
ou alors il faut que je fasse une autre manip ?

Mais @jeammarie, on peut pas te dire de faire des trucs à l’aveugle, encore moins sur un site en prod…

Il faudrait commencer par comprendre pourquoi ce log alors qu’un fichier config/cles.php existe (s’assurer qu’il est bien lu par SPIP)… Il faudrait peut être dupliquer le site et la bdd ailleurs pour essayer de reproduire et modifier ajouter des logs dans les fichiers… Est-ce que tu reproduis en local le comportement avec ce site et sa bdd déjà ?

Tu as bien 2 clés dans le fichier cles.php ? (secret_du_site et secret_des_auth)

Non, je n’ai que secret_du_site en prod (j’ai bien les 2 en local).

Tu n’étais pas censé avoir déplacé le site avec ce fichier fonctionnel (ie: complet?) ?
Ton répertoire config est accessible en écriture par SPIP ?

Oui, j’ai déplacé l’intégralité du site.

Le dossier /config est en 755 et le fichier /config/cle.php est en 666. C’est un mutu, je n’ai pas touché aux droits.

Pour info, c’est l’hébergement Infomaniak avec Libzip version 0.11.2 (cf ce fil), je ne sais pas si ça joue.

Pour archive, les message d’emile sur IRC hier :

<emile> j'ai aussi le pb avec le fichier cles.php, mais visiblement il n'y a pas de solution pour l'instant !?
<b_b> tu es dans la même situation que jean marie emile ? cad déménagement du site ?
<emile> pas vraiment le même cas, mais il est possible que j'ai n'imp avec ce fichier à un moment
<emile> genre on a une version de test, possible que j'ai copier cles.php du serveur de test au serveur de prod
<emile> mais au final on a la même erreur que sur le forum
<emile> il n'y a pas non plus secret_des_auth dans le fichier
<emile> est-ce qu'il y a moyen de regénérer cette variable ?

Pour info, après mise à jour via spip loader, le fichier clé ne contient toujours que la clé secret_du_site.
Et le fichier est en 666 sur un hébergement mutualisé, c’est le bon réglage, non ?

De ce que je lis ici https://git.spip.net/spip/spip/commit/789a57822b84fac3c150cba6592c52cb594701d6 si tu as un compte webmestre qui contient bien des données dans le champ backup_cles le login de cet auteur doit fixer le problème. Sans ça, SPIP devrait recréer un nouveau secret_des_auth mais comme l’indique le commentaire de \auth_spip_initialiser_secret()` cela invalide tous les mots de passe.

Et je complète, je viens de tester en local en supprimant le secret_des_auth dans le fichier cles.php et SPIP l’a bien rétabli au login suivant d’un webmestre du site.

Merci pour la recherche.

Je suis bien webmestre et j’ai bien un backup_cles en base mais SPIP ne régénère pas secret_du_site.
J’ai également testé en local et là, pas de problème, la clé est bien régénérée.

En prod, j’ai changé temporairement les droits de /config/cle.php en 777 (au lieu de 666) et je me suis connecter mais la clé n’est toujours pas régénérée.

Arrivé là, on peut invalider les mots de passe si on est sûr que ça débloque la situation. Il est fait mention d’un force=true L188, c’est quoi la manip ?
Sinon, l’étape d’après serait de réinstaller le site…

tu peux m’envoyer un accès au site en ssh de préférence ou en ftp et un accès à la base ?
Il sembe que tu sois dans un cas foireux que je comprends pas et qu’on a pas prévu, et plutot que de s’en débarasser n’importe comment le mieux serait d’en profiter pour identifier le bug dans SPIP et le corriger non ? parce que sinon toi ou quelqu’un d’autre va retomber dessus un de ces quatre…

1 « J'aime »

Carrément, je t’envoie un accès ssh demain.
Tu voudras un compte webmaster ?

en fait il va même me falloir le login/pass d’un webmestre qui a un backup_cles en base, car ce ne sera pas possible de debug autrement…

C’est fait, je t’ai envoyé les infos par mail.
Merci

Le problème est donc résolu et il y a une PR pour corriger les soucis que j’ai détecté sur le site
https://git.spip.net/spip/spip/pulls/5207

1 « J'aime »

Super, merci :slight_smile:

Bonjour,

Heureusement que je suis tombé sur ce post. J’avais un webmaster qui n’arrivait pas à se connecter (erreur 500) et on regardant log/aut j’avais le message suivant:

2022-06-24 09:16:07 37.10.212.6 (pid 3055555) :Pub:!INFO: Pas de cle secrete disponible, et aucun webmestre n'a de backup, on regenere une nouvelle cle - tous les mots de passe sont invalides

Finalement réglé en changeant les droits du dossier « config ».

Merci