Davidcor89-lip6 / b4mesh

Développment du projet b4mesh sur le materiel de GreenCom.
2 stars 0 forks source link

Blockgraph live visualization : integration #31

Closed GuillaumeDuaForSquad closed 3 years ago

GuillaumeDuaForSquad commented 3 years ago

Integration de #29 blockgraph live visualizer

Puisque les nodes sont serialises en temps reel (a confirmer) dans un fichier unique,
Deux strategies d'integration sont possibles.

Informations :

  • Configuration NGinx : @alexguer42 A developper un systeme de patch de la configuration Nginx via le Makefile.

L'integration, quelque soit la strategie, consiste en l'ajout de deux endpoint dans la configuration NGinx.

1 : Le fichier html

location /blockgraph_live_visualizer {
    default_type "text/html";
    alias /path/to/live_visualizer.html;
}

2 : Le endpoint a partir duquel seront pollees les donnees

Option 1

Servir le fichier de serialisation, /tmp/blockgraph, directement depuis un endpoint Nginx.

Configuration Nginx

Ajouter un forward vers le endpoint de polling des informations des nodes

location /poll_nodes_informations{
    alias /tmp/blockgraph;
}

Configuration/JS

   configuration.blockgraph_as_dot_API_accesspoint = "<protocol>://<ip>:<port>/poll_nodes_informations";

⚠️ Cette IP ne doit pas etre locale, puisque transmise au poller cote client.

Option 2

Deleguer la responsabilite de transmettre les bonnes informations au node b4mesh

Configuration/JS

Comme mentionne dans la documentation du visualizer, editer le fichier de configuration pour faire correspond l'IP de polling des nodes avec celle du endpoint definit dans la section ci-apres.

⚠️ Cette IP ne doit pas etre locale, puisque transmise au poller cote client.

   configuration.blockgraph_as_dot_API_accesspoint = "<protocol>://<ip>:<port>/<path/to/endpoint>";

Configuration Nginx

Ajouter un forward vers le endpoint de polling des informations des nodes

location /poll_nodes_informations{
    proxy_pass http://127.0.0.1:4242/poll_nodes_informations;
}

C++

{
    "0.0.0.0:4242/poll_nodes_informations",
    { method::get },
    [&s](b4mesh::http::request_data_type && request_datas)
        -> b4mesh::http::response_data_type
    {
        std::cout << "poll_nodes_informations: [GET] received : [" << request_datas.body << "]\n";
            const auto nodes_informations_as_string = /* ... */ ; // read `/tmp/blockgraph` here
        return {
            "application/json",
                        nodes_informations_as_string
        };
    }
}

Limitations :

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Je crois savoir que @alexguer42 a finit sa mission.
Est-ce par consequent toi qui te chargera d'integrer et tester cette feature ? Je crois savoir que vous avez effectue un handsover.

Ps : Je viens d'updater ce ticket, je pense avoir trouve une strategie d'integration plus simple (voir section Option 1)

GuillaumeDuaForSquad commented 3 years ago

Point technique : Il faudra tester les acces concurrents sur le fichier dans lequel sont serialises les informations.

Davidcor89-lip6 commented 3 years ago

Bonjour Guillaume,

Effectivement @Alexandre Guerre alexandre.guerre@upmc.fr a fini sa mission. Moi je commence a peine à prendre la main. Pour le moment je ne saurais pas te dire si je vais m'occuper d'implémenter la solution tout de suite. Je vais poser ma question et je te tiens au courant.

cordialement,

David

On Tue, Mar 2, 2021 at 2:57 PM GuillaumeDua4Squad notifications@github.com wrote:

@Davidcor89-lip6 https://github.com/Davidcor89-lip6 Je crois savoir que @alexguer42 https://github.com/alexguer42 a finit sa mission. Est-ce par consequent toi qui te chargera d'integrer et tester cette feature ? Je crois savoir que vous avez effectue un handsover.

Ps : Je viens d'updater ce ticket, je pense avoir trouve une strategie d'integration plus simple (voir section Option 1)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Davidcor89-lip6/b4mesh/issues/31#issuecomment-788927104, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASL6C2ILJ67SZBLQ67OZHCLTBTVDJANCNFSM4YMGZHQQ .

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Bonjour David, Est-ce que tu penses que tu seras en mesure de faire une demonstration Lundi des livrables que j'ai effectue ?

Sinon, j'ai egalement livre un test automatique qui fait un mock de l'API (donc des donnees) pour faire une demonstration du visualizer. (le serveur est live_visualizer/tests/server.py, le bot qui genere le flux de donnee est live_visualizer/tests/automate_test.py.

De telle facon a ce que :

Et il suffit ensuite d'utiliser un browser (de preference Googe Chrome, voir la documentation du composant) pour consulter la representation graphique du graph en temps reel (par polling de N secondes d'internal, N etant configurable via le fichier configuration.js)

Bon weekend a toi d'ici la :)

Davidcor89-lip6 commented 3 years ago

Bonjour Guillaume,

Aujourd'hui je ne me trouve pas dans le laboratoire et je n'ai donc pas accès aux routeurs pour tester tes avancements. Je pense que le mieux serait de se limiter par un rapport des tes avancements, et à partir de là voir comment et qui va faire les tests. Je pourrais peut-être le faire cette semaine, mais maintenant les ingénieurs de green ont aussi accès au repo sur Github et peuvent le faire eux même.

Bonne journée,

David

On Fri, Mar 12, 2021 at 4:11 PM GuillaumeDua4Squad @.***> wrote:

@Davidcor89-lip6 https://github.com/Davidcor89-lip6 Bonjour David, Est-ce que tu penses que tu seras en mesure de faire une demonstration Lundi des livrables que j'ai effectue ?

Sinon, j'ai egalement livre un test automatique qui fait un mock de l'API (donc des donnees) pour faire une demonstration du visualizer. (le serveur est live_visualizer/tests/server.py, le bot qui genere le flux de donnee est live_visualizer/tests/automate_test.py.

De telle facon a ce que :

  • D'un part, on puisse lancer un serveur de test (local)

cd /path/to/b4mesh/live_visualizer; py ./tests/automate_test.py

  • D'autre part, on puisse lancer le mock du flux de donnees :

cd /path/to/b4mesh/live_visualizer; py automate_test.py

Et il suffit ensuite d'utiliser un browser (de preference Googe Chrome, voir la documentation du composant) pour consulter la representation graphique du graph en temps reel (par polling de N secondes d'internal, N etant configurable via le fichier configuration.js)

Bon weekend a toi d'ici la :)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Davidcor89-lip6/b4mesh/issues/31#issuecomment-797551343, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASL6C2OEY75W7BOQ7MQYRILTDIVKBANCNFSM4YMGZHQQ .

GuillaumeDuaForSquad commented 3 years ago

Bonjour David,

D'accord c'est tres bien si Green a acces au repo.
Je pense que le sujet des tests sera aborde pendant la reunion de ce jour.

J'ai joins a la livraison de l'outil de visualisation un mock de stream de donnees,
qui permet de valider l'outil.

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Pour l'integration automatisee, Alexandre le fait via une application de patch de la configuration NGinx via le Makefile :

Ce qui applique [https://github.com/Davidcor89-lip6/b4mesh/blob/main/patch/nginx.patch]()

Davidcor89-lip6 commented 3 years ago

Ouais ok;

Mais si ça ne te dérange pas, j'aimerais bien qu'on le fasse ensemble ce jeudi. Bonne journée,

GuillaumeDuaForSquad commented 3 years ago

Oui bien sur :)

J'explorai tout simplement la facon dont Alexandre avait fait la precedente integration, par soucis de consistance.

Batchyx commented 3 years ago

Nginx est configuré pour inclure tout les fichiers dans /etc/nginx/qolyester.d, donc une solution plus simple est de créer un fichier /etc/nginx/qolyester.d/b4mesh.conf avec simplement :

location /add_transaction {
    proxy_pass http://127.0.0.1:4242/add_transaction;
}
GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 : @Batchyx souleve un bon point.

Bien que /add_transaction ne soit pas le sujet de cette issue (voir #25, #26, #27 ),
ca vaut le coup de faire cela proprement et de l'inclure dans la liste des changements prevue Jeudi.

Davidcor89-lip6 commented 3 years ago

Je suis d'accord; On ajoute cette issue pour l'intégration de jeudi. Merci @Batchyx pour la suggestion.

On Mon, Mar 15, 2021 at 5:08 PM GuillaumeDua4Squad @.***> wrote:

@Davidcor89-lip6 https://github.com/Davidcor89-lip6 : @Batchyx https://github.com/Batchyx souleve un bon point.

Bien que /add_transaction ne soit pas le sujet de cette issue (voir #25 https://github.com/Davidcor89-lip6/b4mesh/issues/25, #26 https://github.com/Davidcor89-lip6/b4mesh/pull/26, #27 https://github.com/Davidcor89-lip6/b4mesh/pull/27 ), ca vaut le coup de faire cela proprement et de l'inclure dans la liste des changements prevue Jeudi.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Davidcor89-lip6/b4mesh/issues/31#issuecomment-799542493, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASL6C2M3GC5OR56NIGV6OULTDYWIBANCNFSM4YMGZHQQ .

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 J'ai cree une branche pour preparer les differents elements pour demain,
nous en ferons la review et les correctifs ensemble.

Voir branche live_visualizer_product_integration e4216cb Voir script deploy.cmake

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 : Egalement voir #32 demain

GuillaumeDuaForSquad commented 3 years ago

Vue avec @Davidcor89-lip6 , en attente retour support de Green.

Un script alternatif pour solution "quick-and-dirty" - non teste - est implemente sur la branche d'integration :

EDIT : Un script propre est livre avec le commit c18b5ef

Voir documentation associee dans les README.md.

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 J'ai envoye un email a Khaldoun pour demander les acces VPN/SSH pour tester le scripts de deploiment (en attente de reponse)

GuillaumeDuaForSquad commented 3 years ago

@Batchyx A propos du deploiement des configurations NGinx, il semblerait que @Davidcor89-lip6 n'ai pas les droits d'acces a cette partie du FS :

Exemple de reproduction :

david@portable7190:~/Documents/b4mesh/build_local$ sshpass -p 'b4meshroot' scp /home/david/Documents/b4mesh/nginx/add_transaction.conf 
default@10.181.178.217:/etc/nginx/qolyester.d
scp: /etc/nginx/qolyester.d/add_transaction.conf: Read-only file system

Si le dossier de destination est read-only, comment pouvons nous y ajouter nos fichiers de conf ?
Cf. votre message precedent

joudinet commented 3 years ago

@Batchyx A propos du deploiement des configurations NGinx, il semblerait que @Davidcor89-lip6 n'ai pas les droits d'acces a cette partie du FS :

Exemple de reproduction :

david@portable7190:~/Documents/b4mesh/build_local$ sshpass -p 'b4meshroot' scp /home/david/Documents/b4mesh/nginx/add_transaction.conf 
default@10.181.178.217:/etc/nginx/qolyester.d
scp: /etc/nginx/qolyester.d/add_transaction.conf: Read-only file system

Si le dossier de destination est read-only, comment pouvons nous y ajouter nos fichiers de conf ?

L'accès à l'utilisateur root via SSH est désactivé pour des raisons de sécurité. De plus, le système de fichier où se situe /etc/nginx/qolyester.d est remonté en read-only à la fin de la séquence de démarrage du système, pour se prémunir d’éventuel perte de données en cas de coupure de courant. L'ajout de vos fichiers de configuration doit se faire en 2 temps : D'abord copier le fichier de configuration dans /tmp en temps qu'utilisateur default : scp /path/to/add_transaction.conf default@XXXX:/tmp/ Puis se connecter en ssh à la YOI et copier ce fichier de configuration en temps qu'utilisateur root tout en remontant temporairement le système de fichier en read-write (gràce à la commande rwdo) : sudo rwdo cp /tmp/add_transaction.conf /etc/nginx/qolyester.d/

GuillaumeDuaForSquad commented 3 years ago

@joudinet Merci pour ces informations, nous avons adapte nos scripts de deploiement en consequence.

@Davidcor89-lip6 Je viens de push un work-around sur la branche d'integration du composant [802a20f]

[edit] + quick-fix 48a9cb5

Davidcor89-lip6 commented 3 years ago

Ok, merci, je regarde ca ASAP

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Thx. Je te laisse me faire un feedback ou me dire quand tu veux mettre une reunion de travail,
je reste a ta disposition ;-)

Davidcor89-lip6 commented 3 years ago

Merci beaucoup Guillaume, Je ne pense pas le tester aujourd'hui, j'ai un cours à préparer et à donner cette après midi, mais je le ferai lundi matin.

Bonne journée, David

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Tu me dis si tu as besoin d'un coup de main ;)

Davidcor89-lip6 commented 3 years ago

J'ai dû déplacer le test de l'intégration pour demain après-midi. je dois finir de rédiger des documents pour aujourd'hui et demain matin j'ai un cours à donner. Si tu es dispo dans l'après midi de demain, on pourrait se faire un point pour voir si tout à marché comme prévu.

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Oui bien sur, a 14h ?

Davidcor89-lip6 commented 3 years ago

Ouais, 14hrs c'est très bien

GuillaumeDuaForSquad commented 3 years ago

@joudinet @Batchyx : Nous venons avec @Davidcor89-lip6 de tester le deploiement du composant qui nous servira a visualiser en temps reel l'etat du graph.
FYI, c'est basiquement un site HTML/JS/CSS qui poll des donnees.

Notre script de deploiment copy les sources dans /var/persistent-data/b4mesh/live_visualizer/,
et les configurations des differents endpoints nginx dans /etc/nginx/qolyester.d/ conformement aux indications de @joudinet dans ce poste : https://github.com/Davidcor89-lip6/b4mesh/issues/31#issuecomment-805862631

Suite a cela, nous effectuons un rechargement des configurations nginx :

nginx -s reload

Cependant, lorsque nous tentons de nous connecter via un browser web sur http://<router_ip>/<endpoint_path>/,
nous obtenons une erreur 403.

Si nous effectuons un cat de /var/log/nginx/error.log, nous obtenons les logs suivants :

2021/03/30 14:50:59 [error] 11935#0: *18 open() "/var/persistent-data/b4mesh/live_visualizer/index.html" failed (13: Permission denied), client: 10.0.0.136, server: 
yoi-b4mesh-1.gnyoi.com
, request: "GET /blockgraph_live_visualizer/view/index.html HTTP/1.1", host: "10.181.178.217"
2021/03/30 14:51:01 [error] 11935#0: *18 open() "/var/persistent-data/b4mesh/live_visualizer/index.html" failed (13: Permission denied), client: 10.0.0.136, server: 
yoi-b4mesh-1.gnyoi.com
, request: "GET /blockgraph_live_visualizer/view/index.html HTTP/1.1", host: "10.181.178.217"

Sauriez vous quel est le probleme rencontre ici, et comment le corriger ?

Cordialement,

Batchyx commented 3 years ago

Ma boule de cristal me dit que le fichier /var/persistent-data/b4mesh/live_visualizer/index.html doit appartenir à root et qu'il doit être lisible que par lui. ls -l /var/persistent-data/b4mesh/live_visualizer/index.html pourrait le confirmer.

Nginx utilise l'utilisateur et le groupe www-data. Vous pouvez utiliser sudo -u www-data -s pour vous connecter en tant que cet utilisateur et vérifier si vous accédez aux fichiers.

Pour corriger, le plus simple est d'accorder des droits de lecture à tout le monde avec chmod a+r. En général, sous Linux, on utilise la commande install pour copier des fichiers en choisissant les droits.

GuillaumeDuaForSquad commented 3 years ago

@Batchyx Merci pour ces informations.
Peut-etre pourriez vous participer a notre prochaine session de travail (visio, par Jisty) , afin de reduire les echanges ?

@Davidcor89-lip6 Peux tu confirmer qu'il s'agit effectivement d'un probleme de droits d'acces aux fichiers ?

@Batchyx Les scripts de deploiement generent basiquement des commandes scp,
ce qui me semble t-il ne permet pas de gerer les droits des fichiers directement.
Si j'ajoute une commande via pipeline ssh qui chmod a+r les fichiers, est-ce que tout sera OK ?
Ou faut-il que l'arborescence entiere de /var/persistent-data/b4mesh soit egalement chmodee ?

Davidcor89-lip6 commented 3 years ago

Effectivement, c'est un problème de droits.
J'ai essayé de changer les droits des fichiers avec l'utilisateur www-data mais sans succès.

@Batchyx faut-il le faire avec l'utilisateur root ?
Voici l'output de la commande :

chmod -R a+r live_visualizer
[www-data@YOI-B4MESH-1 b4mesh]$ chmod -R a+r live_visualizer/
chmod: changing permissions of 'live_visualizer/': Operation not permitted
chmod: cannot access 'live_visualizer/index.html': Permission denied
chmod: cannot access 'live_visualizer/style.css': Permission denied
chmod: cannot access 'live_visualizer/configuration.js': Permission denied
chmod: cannot access 'live_visualizer/scripts': Permission denied
chmod: cannot access 'live_visualizer/favicon.ico': Permission denied
GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Quand serais-tu disponible pour que l'on avance sur ce point ?

Est-ce qu'un sudo chmod a+r resoud le probleme ?

Davidcor89-lip6 commented 3 years ago

Aujourd'hui je ne suis pas au labo, demain j'aurai l'occasion de tester cette commande avec sudo
et je te ferai un retour. Peut-être que demain même on pourra continuer sur ce point,
je suis disponible le matin uniquement; sinon vendredi on peut faire un point l'après-midi.

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Je te propose demain 10h si cela te convient ;-)
Ca serait chouette de reussir a finir le deploiement de ce composant d'ici la fin de semaine.

Davidcor89-lip6 commented 3 years ago

Bonjour Guillaume, je ne serai pas disponible cette matinée, Je te ferai un retour a la fin de la journée pour te dire comment ca s'est passé avec la commande en mode sudo.

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Ok ca marche ;-) Bon courage et j'attends ton retour.

Au passage, une fois que les dossiers ont les bons droits,
pourrais tu relancer le script de deploiement, et regarder si une autre erreur survient ?

Si cela resoud effectivement la cause du probleme de droits,
je modifierai les scripts de deploiement en adequation.

Davidcor89-lip6 commented 3 years ago

Bonjour,

J'ai essayé de changer les droits des fichier en sudo et j'ai pas eu des problèmes pour changer ces droits, néanmoins, comme @Batchyx l'as mentioné, nginx utilise l'utilisateur www-data et pas l'utilisateur sudo. Donc, ces changements n'ont pas eu d'effet. J'ai aussi testé de changer les droits des fichier avec l'utilisateur www-data mais j'ai pas eu les droits pour réaliser ces changements.

@Batchyx aurais tu une proposition de solution à ce problème pour que @GuillaumeDuaForSquad puisse faire des modifications dans l'automatisation du déploiement?

Voici une copie de l’exécution: * EN USER ROOT **** [root@YOI-B4MESH-1 b4mesh]# ls -al live_visualizer/ total 36 drwxr--r-- 3 default default 4096 Mar 30 14:37 . drwxr-xr-x 4 default default 4096 Mar 30 14:07 .. -rw-r--r-- 1 default default 301 Mar 30 14:46 configuration.js -rw-r--r-- 1 default default 1150 Mar 30 14:46 favicon.ico -rw-r--r-- 1 default default 11718 Mar 30 14:46 index.html drwxr--r-- 2 default default 4096 Mar 30 14:11 scripts -rw-r--r-- 1 default default 1328 Mar 30 14:46 style.css [root@YOI-B4MESH-1 b4mesh]# nginx -s reload [root@YOI-B4MESH-1 b4mesh]# exit * EN USER WWW-DATA *** [default@YOI-B4MESH-1 ~]$ sudo -u www-data -s [www-data@YOI-B4MESH-1 default]$ cd /var/persistent-data/b4mesh/ [www-data@YOI-B4MESH-1 b4mesh]$ ls -al live_visualizer/ ls: cannot access 'live_visualizer/index.html': Permission denied ls: cannot access 'live_visualizer/style.css': Permission denied ls: cannot access 'live_visualizer/configuration.js': Permission denied ls: cannot access 'live_visualizer/..': Permission denied ls: cannot access 'live_visualizer/.': Permission denied ls: cannot access 'live_visualizer/scripts': Permission denied ls: cannot access 'live_visualizer/favicon.ico': Permission denied total 0 d????????? ? ? ? ? ? . d????????? ? ? ? ? ? .. -????????? ? ? ? ? ? configuration.js -????????? ? ? ? ? ? favicon.ico -????????? ? ? ? ? ? index.html d????????? ? ? ? ? ? scripts -????????? ? ? ? ? ? style.css [www-data@YOI-B4MESH-1 b4mesh]$ chmod -R a+r live_visualizer/
chmod: changing permissions of 'live_visualizer/': Operation not permitted chmod: cannot access 'live_visualizer/index.html': Permission denied chmod: cannot access 'live_visualizer/style.css': Permission denied chmod: cannot access 'live_visualizer/configuration.js': Permission denied chmod: cannot access 'live_visualizer/scripts': Permission denied chmod: cannot access 'live_visualizer/favicon.ico': Permission denied [www-data@YOI-B4MESH-1 b4mesh]$ nginx -s reload nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) 2021/04/01 11:49:29 [emerg] 11109#0: open() "/etc/nginx/qolyester.d/add_transaction.conf" failed (13: Permission denied) in /etc/nginx/conf.d/qolyester-http.conf:29

joudinet commented 3 years ago

@Davidcor89-lip6 tu dois être root pour pouvoir changer le owner d'un fichier sous linux, d'où l'utilisation de la commande sudo quand tu es connecté en temps qu'utilisateur default. Ensuite, ton but c'est que ces fichiers puissent être lu par nginx, qui tourne en temps qu'utilisateur www-data, donc utiliser les commandes chown, chmod ou install à cette fin.

Exemple avec install pour copier directement avec les bons droits le fichier de configuration : sudo rwdo install -m 644 /tmp/add_transaction.conf /etc/nginx/qolyester.d/add_transaction.conf

Un autre exemple, avec chown, pour changer le groupe de /var/persistent-data/b4mesh et de son contenu : sudo chown -R default:www-data /var/persistent-data/b4mesh

Puis, tu peux reload ou restart nginx via son script d'init, en temps qu'utilisateur root : sudo /etc/init.d/S50nginx reload sudo /etc/init.d/S50nginx restart

Je t'invite à regarder l'aide en ligne de ces commandes si tu n'as pas l'habitude de les utiliser : sudo --help install --help chown --help chmod --help

GuillaumeDuaForSquad commented 3 years ago

Si sudo chmod a+r /path/to/target donne les droits de lecture a tout le monde,
ca devrait fonctionner.

@Davidcor89-lip6 J'ai push la modification sur la branche d'integration : 76fbaad ,
si tu peux tester de nouveau.

Ps : Pour valider que tout fonctionne bien, sans relicat, il faudra ensuite valider en deployant sur une autre machine que celle sur laquelle nous avons fait nos multiples tentatives.

Batchyx commented 3 years ago

Attention, le droit 'r' pour un répertoire permet de lister les fichiers qu'ils contient, mais pas d'y accéder¹. Pour y accéder, il faut aussi le droit 'x'. chmod propose 'X' comme permission virtuelle pour dire 'x' si c'est un répertoire ou un fichier déjà exécutable.

De plus, chmod n'est pas récursif par défaut, pour le rendre récursif, il faut utiliser -R.

Enfin, effectivement, seulement root ou le propriétaire du fichier/répertoire peuvent changer ses droits. Si c'est l'utilisateur default qui a crée le fichier, alors il en est propriétaire et il n'a pas besoin de sudo pour changer les droits, donc la commande devrait être chmod -R a+rX /path/to/target

[1] https://en.wikipedia.org/wiki/File-system_permissions#Traditional_Unix_permissions

GuillaumeDuaForSquad commented 3 years ago

@Batchyx En conclusion, est-ce que la commande suivante conviendra ?

sudo rwdo install -m 755 /tmp/add_transaction.conf /etc/nginx/qolyester.d/add_transaction.conf

edit : je pars du principe que nginx a les droits sur /etc/nginx/qolyester.d/

joudinet commented 3 years ago

@GuillaumeDuaForSquad : add_transaction.conf n'est pas un répertoire. 644 pour qu'il soit lisible par tous est bien pour add_transaction.conf comme sur mon exemple. @Batchyx faisait référence à la commande sudo chmod a+r /path/to/target qui si target est un répertoire et appartient déjà à l'utilisateur default comme c'est le cas de /var/persistent-data/b4mesh dans l'exemple précédent, devrait être en 755 pour les répertoires et en 644 pour les fichiers qu'il contient.

GuillaumeDuaForSquad commented 3 years ago

@joudinet Si je resume, les instructions que vous donnez sont les suivantes, correcte ?

sudo rwdo install -m 644 /tmp/add_transaction.conf /etc/nginx/qolyester.d/add_transaction.conf

sudo chmod -R 755 /var/persistent-data/b4mesh/
GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Est-ce que tu seras au lip6 aujourd'hui, pour que nous puissions avancer sur ce probleme de droits ?

Davidcor89-lip6 commented 3 years ago

Je pourrais me rendre disponible vers 15h30. Si tu es dispo, pour avancer avec cette histoire des droits.

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Parfait, a toute a l'heure.

joudinet commented 3 years ago

@joudinet Si je resume, les instructions que vous donnez sont les suivantes, correcte ?


sudo rwdo install -m 644 /tmp/add_transaction.conf /etc/nginx/qolyester.d/add_transaction.conf

oui

sudo chmod -R 755 /var/persistent-data/b4mesh/

Non, ce n'est pas une bonne idée de donner des droits d'exécution à des fichiers qui n'en ont pas besoin. De plus je crois que /var/persistent-data/b4mesh appartient déjà à l'utilisateur default, donc sudo est inutile dans ce cas là. Au final, je conseillerai plutôt : chmod -R a+rX /var/persistent-data/b4mesh ou encore mieux

chgrp -R www-data /var/persistent-data/b4mesh
chmod -R g+rX  /var/persistent-data/b4mesh
GuillaumeDuaForSquad commented 3 years ago

@joudinet Je suis en train d'integrer ces elements aux scripts de deploiment.
Quel est le user qui doit effectuer ces commandes ?

Davidcor89-lip6 commented 3 years ago

Est-ce qu'on peut décaler notre réunion pour 16hrs ?

GuillaumeDuaForSquad commented 3 years ago

@Davidcor89-lip6 Oui bien sur.
FYI, je viens de push les correctifs, que nous pourrons tester toute a l'heure : d81ea6e

_Ps : J'ai profite de ces modifications pour y ajouter une conformite (relative) avec le concept de standalone-per-level de CMake. Ainsi, b4mesh/livevisualizer/CMakeLists.txt peut desormais etre execute en standalone, sans dependre de b4mesh/CMakeLists.txt

Davidcor89-lip6 commented 3 years ago

Je suis toujours en réunion, tu es disponible jusqu'à quelle heure ?