YunoHost package of Duniter: refactoring, running with duniter or root user

Hello @YunoHost ,
J’ai toujours de drôles de soucis avec mon noeud Duniter sur Yunohost. Il fonctionnait, mais sautait souvent, je suis passer à la version testing du projet pour voir les améliorations… Mais j’ai toujours de drôles de comportements.

J’ai supprimer l’app, supprimer les dossiers dans /home/yunohost.app/duniter pour repartir à zéro. J’aurais peut-être du sauvegarder avant des datas ??

Si je fait cette commande:
su - duniter -c "duniter --home /home/yunohost.app/duniter wizard key"
retourne

su - duniter -c "duniter --home /home/yunohost.app/duniter wizard key"
Mot de passe : 
su: Échec d'authentification

On me demande le mot de passe, lequel ? Celui de duniter ? il n’y a pas eu de mot de passe à l’installation, juste un utilisateur yunohost, là j’ai créé un utilisateur qui a le même nom que celui de mon utilisateur Cesium roodinux…

J’ai essayé aussi
su - roodinux -c "duniter --home /home/yunohost.app/duniter wizard key"
mais non plus… et cela retourne

su: avertissement : impossible de changer le répertoire vers /home/roodinux: Permission non accordée
-bash: /home/roodinux/.bash_profile: Permission non accordée
2022-04-24T12:59:36+02:00 - debug: Plugging file system...
2022-04-24T12:59:36+02:00 - error: Error: Can't makeDirectory "/home/yunohost.app/duniter/duniter_default" with mode 493: EACCES: permission denied, mkdir '/home/yunohost.app/duniter/duniter_default'

Là non, je pense pas que le dossier de l’utilisateur roodinux n’ai quelquechose à voir…

Ou bien je passe juste par la webui, là ça fonctionne… Mais quid des commandes en CLI ??
Est-ce que la commande doit être autre ? pas simple.
Sinon j’ai ces permissions:

~$ sudo ls -l /home/yunohost.app/
total 8
drwxr-x--- 3 duniter   www-data  4096 avril 24 12:58 duniter

~$ sudo ls -l /home/yunohost.app/duniter/
total 4
drwxr-xr-x 4 duniter duniter 4096 avril 24 14:07 duniter_default

Bon en passant par la webui, j’arrive à

  1. synchroniser
  2. configurer la bonne clé (celle de mon utilisateur cesium)
  3. configurer les bonnes adresses IP de mon reverse DNS (je suis derrière un VPN) pour la BMA

Par contre en console pour voir les logs, je dois utiliser duniter logs.
J’attends de voir comment va se comporter tout cela, mais en attendant, c’est pas clair pour moi les commandes à utiliser…
Par exemple:
duniter status me renvoi Duniter is not running., est-ce bien normal ?
Pourtant dans la webui j’ai bien server started

Ou bien il faut être en root avant de lancer des commandes ?
en root:

~# duniter --home /home/yunohost.app/duniter start
duniter_default daemon already running. PID: 21718
~# duniter --home /home/yunohost.app/duniter status
Duniter is running using PID 21718.

ça me rassure…
Pour les logs aussi ~# duniter --home /home/yunohost.app/duniter logs fonctionne, bon du coup je comprends, il ne faut passer par l’user admin…
Je marque en Résolu ?

En effet, il s’agit du mot de passe de l’utilisateur Duniter, qui n’est pas défini à sa création.
Du coup, la technique qui fonctionne est la suivante :

sudo su - duniter -c "duniter --help"

Si tu fais tourner Duniter en root, il risque d’y avoir les fichiers de configuration avec les accès root, puis une fois que Duniter est lancé avec l’utilisateur duniter ça va échouer.


Non, justement, ce refactoring était pour ne plus faire tourner Duniter en root, car c’est une très mauvaise pratique, qui est pratique certe :wink: S’il y a une faille de sécurité dans Duniter, l’attaquant peut éxecuter des commandes avec les permissions root sur la machine en question. Dans le cas où il est cloisonné avec l’utilisateur duniter il pourrait faire beaucoup moins de choses.

Donc, le service systemd fait tourner Duniter avec l’utilisateur Unix duniter.
Du coup, malheureusement maintenant, nous devons exécuter cette longue commande relativement compliquée pour manipuler correctement Duniter en CLI :

sudo su - duniter -c "duniter --home /home/yunohost.app/duniter $command"

cette commande ne fonctionne pour moi que une fois connecté en root, pas avec l’utilisateur admin…

Mince j’ai oublié le sudo :wink:

Je teste de nouveau en restant avec l’user admin cette fois

sudo su - duniter -c "duniter --home /home/yunohost.app/duniter status"
su: avertissement : impossible de changer le répertoire vers /home/duniter: Aucun fichier ou dossier de ce type
Duniter is running using PID 21718.
sudo su - duniter -c "duniter --home /home/yunohost.app/duniter logs"
su: avertissement : impossible de changer le répertoire vers /home/duniter: Aucun fichier ou dossier de ce type
2022-04-24T18:08:36+02:00 - info: ✘ CERT 3rfnSfwsSW25aPwEyZrB1afyvDQkRgzVv4qPr8riYe29 Already up-to-date
2022-04-24T18:08:36+02:00 - warn:  httpCode=400, ucode=1004, message=Already up-to-date
2022-04-24T18:08:38+02:00 - info: Matched 4 zeros 0000BCC1FA4CE2CBE2524C613EE124571E5C94FC237F84B06DBDCA4532D9A8F1 with Nonce = 10400004109001 for block#519426 by 44M29P
2022-04-24T18:08:39+02:00 - info: Matched 4 zeros 0000440C6B7AA38958ADB9DE589A132368164FA8C607E003F8EB62551B33983F with Nonce = 10100004072077 for block#519426 by 44M29P
2022-04-24T18:08:39+02:00 - info: Matched 4 zeros 0000692E82E22486456B99E91FEED572FB74124CA73F49553F26BBD1B09B33B2 with Nonce = 10300004079551 for block#519426 by 44M29P
2022-04-24T18:08:40+02:00 - info: Matched 4 zeros 0000B89A35C4596EDB433752C5798488ACB00C37FA81B1A0BA7CF0350E3B4EE4 with Nonce = 10100004089213 for block#519426 by 44M29P
2022-04-24T18:08:41+02:00 - info: Matched 4 zeros 0000C1C8F453A4E7C0EF26D015894BF80BEBDDDA416AF6AC6A39153C969D512A with Nonce = 10100004101161 for block#519426 by 44M29P
2022-04-24T18:08:43+02:00 - info: Matched 4 zeros 00006C90545F9D1B5D18DFAA63E67BBA179C90D3241F751CDA02265A105CD402 with Nonce = 10200004124992 for block#519426 by 44M29P
2022-04-24T18:08:47+02:00 - info: Matched 4 zeros 0000EA6F98C2E21D7F25C99228755CBF75FFB7D33693BE76AC416DED0B11DAF3 with Nonce = 10400004211995 for block#519426 by 44M29P
2022-04-24T18:08:50+02:00 - info: Matched 4 zeros 0000B40676D49DDBCB3C83238CDDD963A00A8994DF62D02B576E8E3216C7ADE1 with Nonce = 10300004218681 for block#519426 by 44M29P
2022-04-24T18:08:54+02:00 - info: Matched 4 zeros 00002646F98D7DED313829ED108B89011A419FD2C23D0E774ABEE4634460F63D with Nonce = 10400004298909 for block#519426 by 44M29P
2022-04-24T18:08:54+02:00 - info: Matched 4 zeros 0000373F13985280A97111FB9DB2AC6CC287D8E11ADA70C14EF30C923F72FABF with Nonce = 10300004272922 for block#519426 by 44M29P
2022-04-24T18:08:54+02:00 - info: Matched 4 zeros 000050E6873D9C8BEE5CD5E84D0D4C7CF5DC40627113EC3958F6FE50469BFEBE with Nonce = 10400004300479 for block#519426 by 44M29P
2022-04-24T18:08:55+02:00 - info: Matched 4 zeros 0000C4BB9663DA0B480FA43330B88A2C0A99B078E9A76A1DACAC252C7B776FD9 with Nonce = 10100004270007 for block#519426 by 44M29P
2022-04-24T18:08:55+02:00 - info: Matched 4 zeros 000071CAE5F74FC9F42DC08A0AF67C2391F8D08093CE6D76C5286B30AA2AC710 with Nonce = 10300004287785 for block#519426 by 44M29P
2022-04-24T18:08:56+02:00 - info: Matched 4 zeros 00002B71A63225A87C88F3E8D5BEED9FFEA7FAF7555355662A3742D93220F77E with Nonce = 10100004279298 for block#519426 by 44M29P
[...............................................................................................................................]

Bref, ça fonctionne, à part ce message
su: avertissement : impossible de changer le répertoire vers /home/duniter: Aucun fichier ou dossier de ce type

1 « J'aime »

Autre comportement inattendu, suite à cette commande pour les logs, j’ai beau essayé d’arrêter avec un CTL+c les logs reviennent au bout de quelques secondes, impossible d’arrêter… Je suis arrivé avant que ça recommence à taper un exit pour me déconnecter… bizarre

Est-ce qu’il ne faudait pas créé un dossier /home/duniter/ ?

Je m’en occupe, des changements vont arriver. Merci pour tes recherches et tes retours, ça m’est précieux et ça me fait avancer pour fournir un paquet de meilleure qualité !

À présent je spécifie le dossier home de l’utilisateur duniter comme $datadir /home/yunohost.app/duniter comme ça plus besoin de spécifier --home /home/yunohost.app/duniter lors des commandes Duniter.

J’ai essayé d’afficher les logs avec :

sudo su - duniter -c "duniter --home /home/yunohost.app/duniter logs"

ça crée une tâche en arrière-plan (background), c’est étrange, je les ait killé.

J’utilise lnav, car la commande duniter logs est trop lente à démarrer.
J’ai un alias shell duniter-logs : lnav ~/.config/duniter/duniter_default/duniter.log

sudo su - duniter -c "lnav duniter_default/duniter.log"

Hum, oui si je fait une commande top, je vois des PID de duniter, c’est normal ?
J’ai redémarré avec sudo su - duniter -c "duniter --home /home/yunohost.app/duniter restart" mais toujours plusieurs(4) PID avec commande node et une duniter_default