Essaye en remplaçant le self par $$ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ps -o user= $(awk '{print $6}' /proc/$$/stat)
Essaye en remplaçant le self par $$ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ps -o user= $(awk '{print $6}' /proc/$$/stat)
Cordialement.
Si le script d'installation s'est déconnecté (ou l'un de ses parents) de la session d'origine avec nohup ou équivalent, il n'est plus dans la même session ou le même process group.
Il peut en revanche remonter la hiérarchie de ses parents jusqu'à un shell appartenant à l'utilisateur courant, mais ce n'est pas garanti.
Si l'un de ces processus est mort, ses descendants sont reparentés à init.
Pour afficher la hiérarchie complète, la commande suivante peut être utilisée, elle affichera le nom du compte utilisateur en cas de changement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part pstree -up -cls $$
ɹǝsn *sıɹɐlos*
Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.
Si tu n'as pas pstree, voilà un script qui devrait t'afficher le nom de l'utilisateur original si le processus courant est toujours connecté à la bonne hiérarchie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 pid=$$ while [ $pid -gt 1 ] ; do read pid user < <(ps -p $pid -o ppid= -o user=) if [ "$user" != root ] ; then echo $user break fi done
ɹǝsn *sıɹɐlos*
Je viens par ailleurs de tester en post install les propositions de ggnore:
$SUDO_UID et $SUDO_USER me renvoient les bonnes informations.
Cela fonctionne y compris quand l'installation se fait depuis un terminal où l'on s'est placé en root complet.
Il me restera donc toujours la possibilité de tester si sudo est installé, de récupérer l'utilisateur avec $SUDO_USER si c'est le cas, et de faire appel à logname dans le cas contraire.
En espérant qu'il n'existe pas une dérivée Debian exotique !
Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.
J'ai testé ton script jlliagre, il fonctionne.
Mais qu'entends-tu par "Si tu n'as pas pstree" ?
Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.
Ce que veux dire jlliagre, c'est que par défaut pstree n'est pas installée en standard...
Et comment ça se passe si l'utilisateur qui installe le package est réellement root ?
Je pose cette question, car la solution de jlliagre ne retournera rien dans ce cas...
Cordialement.
Sur Ubuntu, il l'est. Le script a tout de même fonctionné.
Oui, tout à fait puisqu'il exclut root des réponses valides.Et comment ça se passe si l'utilisateur qui installe le package est réellement root ?
Je pose cette question, car la solution de jlliagre ne retournera rien dans ce cas...
On peut en revanche affiner en sortie de boucle en testant si $user est vide. S'il l'est, c'est que c'est root qui est l'utilisateur courant.
Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.
Oui bien sûr. Ce que je voulais dire, c'est que pstree remonte la hiérarchie des processus et affiche le nom du compte de l'utilisateur non root s'il en trouve un. Mon script permet de faire la même chose sans pstree.
Sur une installation Ubuntu standard, l'utilisateur courant ne peut pas être root car ce compte est désactivé par défaut. On doit donc systématiquement se loguer avec un compte utilisateur "normal" puis passer sous root via sudo.On peut en revanche affiner en sortie de boucle en testant si $user est vide. S'il l'est, c'est que c'est root qui est l'utilisateur courant.
Si mon script ne renvoie rien, c'est qu'il n'a pas pu remonter jusqu'à un processus de l'utilisateur.
ɹǝsn *sıɹɐlos*
Je viens de me rendre compte que je n'avais pas vu ton message, désolé !
Lorsque je veux passer en root complet , je fais un
sous Ubuntu
Code : Sélectionner tout - Visualiser dans une fenêtre à part sudo su root
J'ai testé l'installation du paquet depuis un terminal, , avec divers contextes:
- après être passé root par su sous Debian
- par sudo sous Ubuntu
- après être passé root par sudo su root sous Ubuntu lorsque je voulais vérifier la solidité de ce qui était retourné.
Qu'entends-tu par "le même souci au départ de l'installation du package ?" Tu veux dire en vérifiant si le problème apparaît dans un script de pré installation ?
Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.
Oui, car si tu n'as pas ce problème au départ, autant sauver la valeur pour la récupérer ensuite.
Cordialement.
J'avais écarté cette solution qui m'avait effleuré l'esprit pensant qu'il n'y avait aucune raison pour que le statut puisse changer entre la pré et la post installation, du coup je ne l'ai pas testée.
Comme le problème est résolu avec la solution de jlliagre, ça restera à tester par ceux qui en auront la patience !
Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager