Résolu le 23-02-22 Comment lancer le même bash pour différents users

Postez ici vos scripts Bash, Python, C++, etc...
Répondre
corso66
Messages : 22
Enregistré le : mer. 9 sept. 2020 12:49
Localisation : Ici et ailleurs

Comment lancer le même bash pour différents users

Message par corso66 »

Bonjour à tous, mais qu'est-ce que j'aime cette distri :D

J'utilise Mint sur une VM ou je développe une application IoT avec Node-Red.
Node-Red ne pouvant pas fonctionner à une instance pour plusieurs users, je dois lancer plusieurs instances, une par user.

Tout fonctionne bien de manière manuelle, et je créé un nouvel user par

Code : Tout sélectionner

useradd -m user
et avec le /etc/skel.

Pour lancer une nouvelle instance Nodered, je lance la commande adéquate dans un bash nomé start.sh lui même situé dans le répertoire,

Code : Tout sélectionner

/home/user/.node-red
étant connecté à l'utilisateur. Donc chaque user a son start.sh dans son propre répertoire.

Là ou je bloque, je ne sais pas comment je pourrais, via un script, lancer toutes les instances à la fois. Un bash qui lancerait tout les "start.sh" de tous les user sachant sachant qu'il faut être se connecter à chaque ID utilisateur et qu'ils ont à priori un MP ... :-o

Merci d'avance pour vos conseils
PC fixe HP | CPU i7-3770 4 cœurs @ 3.6GHz | 16Go ram | GPU Nvidia 750Ti | Dual Boot Mint Cinnamon 20.03 vs Win10 | 3 écrans
corso66
Messages : 22
Enregistré le : mer. 9 sept. 2020 12:49
Localisation : Ici et ailleurs

Re: Comment lancer le même bash pour différents users

Message par corso66 »

Merci à vous 2.

Mais c'est formidable merci !!! J'avais bien essayé cette commande mais pas en root ! Ca ne peut donc pas fonctionner avec un user qui fait partie du groupe sudo ?

Bon étant débutant je risque encore de vous solliciter :shock:
PC fixe HP | CPU i7-3770 4 cœurs @ 3.6GHz | 16Go ram | GPU Nvidia 750Ti | Dual Boot Mint Cinnamon 20.03 vs Win10 | 3 écrans
corso66
Messages : 22
Enregistré le : mer. 9 sept. 2020 12:49
Localisation : Ici et ailleurs

Re: Comment lancer le même bash pour différents users

Message par corso66 »

Bonsoir,

J'ai bien avancé.

Du coup mon soucis maintenant, et après avoir fait quelques recherches, je me demande comment shunter le password (que je n'ai pas créé !) d'un user lorsque je fais cette commande par exemple :

Code : Tout sélectionner

su -
root@sylvain-VirtualBox:/home/corso/.node-red$ su corso -c ./start.sh
La ok je suis en root, j'arrive à lancer cette commande.

Par contre, si je me logue en tant qu'utilisateur système nommé "wbsys" et appartenant au groupe "sudo", et que je fais la même manip, il me demande le MP de corso (qui n'est pas configuré, je n'en ai pas besoin) :

Code : Tout sélectionner

wbsys@sylvain-VirtualBox:/home/corso/.node-red$ su corso -c ./start.sh
Mot de passe : 
su: Échec d'authentification
D'ailleurs, y'a t'il un mp par défaut lorsqu'on créé un nouvel user avec useradd et que l'on a pas configuré le passwd ?

merci d'avance
PC fixe HP | CPU i7-3770 4 cœurs @ 3.6GHz | 16Go ram | GPU Nvidia 750Ti | Dual Boot Mint Cinnamon 20.03 vs Win10 | 3 écrans
corso66
Messages : 22
Enregistré le : mer. 9 sept. 2020 12:49
Localisation : Ici et ailleurs

Re: Comment lancer le même bash pour différents users

Message par corso66 »

Je ne comprends pas trop le "que l'on a pas configuré le passwd", qu'entends tu par là ?
Salut, et bien lorsque je fais un useradd -m user, ça créé l'user et son répertoire /home, mais il ne me demande pas de configurer le password. Si j'en veux un, je dois le faire manuellement avec la commande.

alors je n'avais pas envisager d'accoler un sudo à su !

Désormais j'arrive à lancer le commande adéquate pour chaque user comme ceci par exemple :

Code : Tout sélectionner

cd /home/corso/.node-red/ && sudo su corso ./start.sh
Car je suis obligé de lancer mon script à partir du répertoire .node-red.

Est-il possible, dans un script, de me logger en tant que user "wbsys" et de lui renseigner automatiquement son password pour que la suite de mes commandes sudo soit opérationnelles ?
PC fixe HP | CPU i7-3770 4 cœurs @ 3.6GHz | 16Go ram | GPU Nvidia 750Ti | Dual Boot Mint Cinnamon 20.03 vs Win10 | 3 écrans
corso66
Messages : 22
Enregistré le : mer. 9 sept. 2020 12:49
Localisation : Ici et ailleurs

Re: Comment lancer le même bash pour différents users

Message par corso66 »

cyrille a écrit : lun. 21 févr. 2022 17:15
corso66 a écrit : lun. 21 févr. 2022 13:51 Désormais j'arrive à lancer le commande adéquate pour chaque user comme ceci par exemple :

Code : Tout sélectionner

cd /home/corso/.node-red/ && sudo su corso ./start.sh
Car je suis obligé de lancer mon script à partir du répertoire .node-red.

Code : Tout sélectionner

 sudo su corso /home/corso/.node-red/start.sh
?
Alors voici pourquoi cette commande ne passe pas, et je t'avoue ne pas comprendre pourquoi. Je ne sais pas si tu connais node-red lui-même basé sur NodeJS. Il y a donc un dossier .node-red situé dans chaque dossier user. Dans ce dossier .node-red, il y a un fichier de conf nommé settings.js qui est lu au démarrage de l'instance node-red et propre à cet utilisateur. J'utilise le /etc/skel.
J'ai modifié le début de ce fichier en ajoutant les quelques lignes de code suivante :

Code : Tout sélectionner

const fs = require('fs');
var splited = (fs.readFileSync('usrcfg.txt', 'utf8')).split('\n');

const user_id = (splited[0]);
const user_pass = (splited[1]);
const user_port = (splited[2]);
Tu constates donc que je fais appel au fichier "usrcfg.txt que je créé juste avant à la création de l'user, et qui se trouve dans sont répertoire ".node-red".
Si je fais donc :

Code : Tout sélectionner

sudo su corso /home/corso/.node-red/start.sh
... node-red ne peut démarrer car il ne trouve pas le fichier en question "no such file or directory".

Si en ligne de commande je fais :

Code : Tout sélectionner

cd /home/corso/.node-red/
sudo su corso ./start.sh
ça fonctionne.

Ou alors, si je modifie l'appel du fichier avec le chemin absolu,

Code : Tout sélectionner

var splited = (fs.readFileSync('/home/corso/.node-red/usrcfg.txt', 'utf8')).split('\n');
là ça fonctionne aussi, mais ça ne rend pas ce fichier universel pour chaque user. A moins que je puisse remplacer ../corso/.. par quelque chose de dynamique du style $USER ...

Alors pour ce qui est de mon bash, il se trouve également dans chaque .node-red user, il y a qu'une seule ligne :lol:

Code : Tout sélectionner

#!/usr/bin/bash
node /home/wbsys/nodered/node_modules/node-red/red.js
Il y a un lien de répertoire symbolique dans chaque .node-red user pointant vers /home/wbsys/nodered/node_modules, permettant les mises à jour pour tout le monde via npm...

J'espère avoir été assez explicite, mais en tout cas, tes explications me sont utiles et m'aide à mieux comprendre linux ;-)
PC fixe HP | CPU i7-3770 4 cœurs @ 3.6GHz | 16Go ram | GPU Nvidia 750Ti | Dual Boot Mint Cinnamon 20.03 vs Win10 | 3 écrans
corso66
Messages : 22
Enregistré le : mer. 9 sept. 2020 12:49
Localisation : Ici et ailleurs

Re: Comment lancer le même bash pour différents users

Message par corso66 »

cyrille a écrit : mar. 22 févr. 2022 13:17
Tu constates donc que je fais appel au fichier "usrcfg.txt que je créé juste avant à la création de l'user, et qui se trouve dans sont répertoire ".node-red".
Normalement il n'est pas appelé par un path absolu

Je lis plus en détail ce soir (là je suis au taf)
Pas de problème, bonne journée à toi
PC fixe HP | CPU i7-3770 4 cœurs @ 3.6GHz | 16Go ram | GPU Nvidia 750Ti | Dual Boot Mint Cinnamon 20.03 vs Win10 | 3 écrans
corso66
Messages : 22
Enregistré le : mer. 9 sept. 2020 12:49
Localisation : Ici et ailleurs

Re: Comment lancer le même bash pour différents users

Message par corso66 »

Merci pour cette doc. Très intéressante.

Ben du coup ça fonctionne à priori, en modifiant ma ligne de code comme suit :

Code : Tout sélectionner

ar splited = (fs.readFileSync('./.node-red/usrcfg.txt', 'utf8')).split('\n');
Il lui fallait vraiment le répertoire de base "./node-red"...

Donc la commande initiale que tu m'avais donné pour lancer le script...

Code : Tout sélectionner

sudo su corso /home/corso/.node-red/start.sh
... fonctionne.

Ma dernière question (enfin peut-être :roll: ) concerne justement le premier mot de passe à entrer à sudo.
La petite interface graphique simple que j'ai construite avec node-red me permet de créer l'user avec son répertoire /home/user/.node-red à partir du squelette linux, avec ses fichiers par défaut, les droits etc... puis à la fin, je lance le script avec la fameuse commande.

Image

En tant qu'administrateur, une fois les 3 champs renseignés, je clique sur "valider" puis ma programmation JavaScript me permet de manipuler les commandes linux. Sauf qu'il faudrait que je puisse squizzer le 1er password sudo lors de la première commande.
Existe t-il un moyen de le faire ou bien c'est moi qui doit me débrouiller pour lui renseigner ce mp dès qu'il est demandé (sachant qu'à ce moment là, je travaille de manière graphique ?
PC fixe HP | CPU i7-3770 4 cœurs @ 3.6GHz | 16Go ram | GPU Nvidia 750Ti | Dual Boot Mint Cinnamon 20.03 vs Win10 | 3 écrans
corso66
Messages : 22
Enregistré le : mer. 9 sept. 2020 12:49
Localisation : Ici et ailleurs

Re: Comment lancer le même bash pour différents users

Message par corso66 »

cyrille a écrit : mer. 23 févr. 2022 09:36 J'avoue pas trop te comprendre...
Ben en tout cas, tes réponses devraient satisfaire mes questions ;)

Ta solution 2 me parait la plus propre et sécurisée. D'autant plus que je peux hasher le password dans le fichier pwd.txt.

Pour résumer, je cherche à passer en droit sudo au moment ou je clique sur "valider", me permettant ensuite d'enchainer le reste des commande pour la création de l'user et jusqu'au lancement de mon script start.sh.
PC fixe HP | CPU i7-3770 4 cœurs @ 3.6GHz | 16Go ram | GPU Nvidia 750Ti | Dual Boot Mint Cinnamon 20.03 vs Win10 | 3 écrans
corso66
Messages : 22
Enregistré le : mer. 9 sept. 2020 12:49
Localisation : Ici et ailleurs

Re: Comment lancer le même bash pour différents users

Message par corso66 »

Oui je viens de tester ta solution 2, ça marche !

Je passe en résolu, merci pour tes explications claires et précises et pour le temps que tu m'as accordé. Encore beaucoup de choses à apprendre en commandes linux.

Bien à toi ;)
PC fixe HP | CPU i7-3770 4 cœurs @ 3.6GHz | 16Go ram | GPU Nvidia 750Ti | Dual Boot Mint Cinnamon 20.03 vs Win10 | 3 écrans
Répondre