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

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

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 »

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
Pas sur d'avoir tout saisis mais pour lancer un programme via le compte d'un utilisateur, le plus simple ne serait t il pas que ton script tourne avec les droits root et lance ensuite les applications via la commande su ou sudo (si mint et non base lmde)

Exemple sous SID

Je passe root

Code : Tout sélectionner

$ su -
Mot de passe : 
$ whoami
root
Je lance une commande via un autre compte que le root (cf le prompt je suis bien root)

Code : Tout sélectionner

root@valhalla:~# su -c whoami ragnarok
ragnarok

Donc dans ton script
1/ Récupérer tous les ID ayant un processus de ton programme en cours (ps -aux sans doute avec un grep et un cut pour récupérer le nom de l'user l'ayant lancé)
2/ Boucler sur cette liste pour lancer les commandes souhaiter via le compte de cet (s) user's)

Bien sûr le script devra vérifer qu'il est bien lancé avec les droits root / admin / sudo
Un truc du style

Code : Tout sélectionner

if [ "$EUID" -ne 0 ]
  then 
  	echo "Lancer ce script en mode administrateur"
  exit
fi
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

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 »

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 use
Sinon autre piste, lancer le script à la connexion de l'user

==> soit connexion bash --> via le .bashrc

==> soit connexion gui -> via un fichier autostart ( ~/.config/autostart/ ). J'avais écrit ce script python / gtk qui fait le boulot de créer ce genre de lanceur cf https://framagit.org/CyrilleBiot/create ... t_launcher )
?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 à 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

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 »

OUPS DESOLE, j'ai écrit dans ton message plutot que de te réponde, mauvaise manip... :shock: :shock: :shock: :shock: :l :l :l
(ai du en supprimer un bout, sorry

Merci à vous 2.
y'a en qu'un ;)
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 ?
Pas compris,
si tu la lances en sudo , ça fonctionne avec tous les users

Bon étant débutant je risque encore de vous solliciter :shock:
Pas de soucis, au plaisir ;)
?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 »

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

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 »

Code : Tout sélectionner

wbsys@....$su corso -c ./start.sh
Si tu regardes ton prompt, tu es en wbsys et tu lances la commande directement. Cet utilisateur n'a pas les droits nécessaires pour la passer.
Il faut utiliser "sudo"

Exemple

Code : Tout sélectionner

ragnarok@ragnarok-VirtualBox:~$ su test -c whoami
Mot de passe : 
su: Échec d'authentification
--> Idem que toi

Code : Tout sélectionner

ragnarok@ragnarok-VirtualBox:~$ sudo su test -c whoami
[sudo] Mot de passe de ragnarok :       
test
--> je lui donne les droits sudo et ça passe

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 ?
Normalement pas possible qu'il n'y ait pas de mot de passe

Code : Tout sélectionner

ragnarok@ragnarok-VirtualBox:~$ sudo adduser toto
Ajout de l'utilisateur « toto » ...
Ajout du nouveau groupe « toto » (1002) ...
Ajout du nouvel utilisateur « toto » (1002) avec le groupe « toto » ...
Création du répertoire personnel « /home/toto »...
Copie des fichiers depuis « /etc/skel »...
Nouveau mot de passe : 
Retapez le nouveau mot de passe : 
Aucun mot de passe fourni
Nouveau mot de passe : 
Retapez le nouveau mot de passe : 
Aucun mot de passe fourni
Nouveau mot de passe : 
--> si pas de mot de passe tu bloques l'installation[/code]

Avec sudo ou via root, aussi pas besoin du mot de l'$USER qui lance la lance, juste celui du propriétaire du script sudo

Je ne comprends pas trop le "que l'on a pas configuré le passwd", qu'entends tu par là ?
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

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 me demande comment shunter le password (que je n'ai pas créé !)
Tu n'as pas à le faire, si tu mets du sudo
Il te faudra simplement donner le mot de passe de l'utilisateur sudo pas des autres utilisateurs, fort heureusement
sudo te donne tous les droits d'administration
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

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 »

Si tu lances en plus script en sudo , même pas besoin de coller des sudo devant les commandes admin, juste un test sudo en début de script
Exemple à l'arrache

Code : Tout sélectionner

#!/bin/bash

# Test des droits admin
if [ "$EUID" -ne 0 ]
  then 
  	echo "Lancer ce script en mode administrateur"
  exit
fi


su test -c whoami
su toto -c whoami

Code : Tout sélectionner

ragnarok@ragnarok-VirtualBox:~$ ./test.sh
Lancer ce script en mode administrateur
Il nous jette, normal

Code : Tout sélectionner

ragnarok@ragnarok-VirtualBox:~$ sudo ./test.sh
test
toto
ça passe en sudo ;)
?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 »

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

Répondre