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

Postez ici vos scripts Bash, Python, etc.
corso66
Messages : 15
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 »

Dernier message de la page précédente :

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

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

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

Message par cyrille »

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
?
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.
Il y a une option pour saisir directement le mot de passe que tu souhaites
Mais si tu utilises sudo , tu n'as pas besoin de connaitre son mot de passe pour interagir avec son compte
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 ?
Je pense que tu prends le problème à l'envers et te complique la vie.
Si tu lances, via ton compte "wbsys" ton script avec les droits sudo, ça passera sans mot de passe

Tu peux poster ton script dans sa totalité qu'on se rende mieux compte de la problématique ?
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

corso66
Messages : 15
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

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

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

Message par cyrille »

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".
Normal il n'est pas appelé par un path absolu

Je lis plus en détail ce soir (là je suis au taf)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

corso66
Messages : 15
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

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

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

Message par cyrille »

Je n'utilise pas ce langage donc ne le connais pas
Mais d'après la doc c'est possible
cf https://futurestud.io/tutorials/node-js ... -directory
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

corso66
Messages : 15
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

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

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

Message par cyrille »

J'avoue pas trop te comprendre...

As tu essayé par exemple

1/

Code : Tout sélectionner

echo <password> | sudo -S su <TON_USER> -c <TA_COMMANDE>
Mais le pass sera alors en clair dans ton script

2/
Ou depuis un fichier (pwd.txt) contenant ce passe

Code : Tout sélectionner

cat pwd.txt |  sudo -S su <TON_USER> -c <TA_COMMANDE>
Attention tu prendras soin de coller un chemin absolu et adaptera les droits de ce fichier en lecture seule au proprio du script pour des question de sécurité
la fichier ne doit contenir qu'une ligne sans retour à la ligne

3/
Configurer sudo
pour que ton user n'est pas à saisir de password. Attention uniquement sur cette commande et non l'ensemble des commandes sudio
Un truc du style (visudo)

Code : Tout sélectionner

<TON_USER> ALL = NOPASSWD: /usr/sbin/adduser
(syntaxe à vérifier, pas de poste sudo sous la main)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

corso66
Messages : 15
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

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

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

Message par cyrille »

Bon l'essentiel , c'est que tu y trouves ton compte ;)
Passe en résolu si OK ;)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

corso66
Messages : 15
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