IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Obtenir l'utilisateur courant dans un script de postinstallation d'un paquet


Sujet :

Shell et commandes GNU

  1. #21
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 266
    Points : 12 681
    Points
    12 681
    Par défaut
    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.

  2. #22
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    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)
    oui je me suis fait la réflexion après, my bad

  3. #23
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    au risque de me répéter, est-ce que le SID n'est pas le discriminant qu'on recherche ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps -AH -o user,pid,sid,command
    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:

    ɹǝsn *sıɹɐlos*

  4. #24
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    (...) avec nohup ou équivalent, il n'est plus dans la même session ou le même process group.
    exact, j'avais pas fait le lien, my bad²

  5. #25
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 891
    Points : 4 157
    Points
    4 157
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    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)
    Une bonne et une mauvaise nouvelle:
    - le retour n'est pas vide (c'est la bonne)
    - ça renvoie root (c'est la mauvaise).
    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.

  6. #26
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    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*

  7. #27
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 891
    Points : 4 157
    Points
    4 157
    Billets dans le blog
    1
    Par défaut
    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.

  8. #28
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 891
    Points : 4 157
    Points
    4 157
    Billets dans le blog
    1
    Par défaut
    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.

  9. #29
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 266
    Points : 12 681
    Points
    12 681
    Par défaut
    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.

  10. #30
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 891
    Points : 4 157
    Points
    4 157
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Ce que veux dire jlliagre, c'est que par défaut pstree n'est pas installée en standard...
    Sur Ubuntu, il l'est. Le script a tout de même fonctionné.

    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...
    Oui, tout à fait puisqu'il exclut root des réponses valides.
    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.

  11. #31
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par Philippe Dpt35 Voir le message
    Sur Ubuntu, il l'est. Le script a tout de même fonctionné.
    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.

    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.
    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.
    Si mon script ne renvoie rien, c'est qu'il n'a pas pu remonter jusqu'à un processus de l'utilisateur.
    ɹǝsn *sıɹɐlos*

  12. #32
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 891
    Points : 4 157
    Points
    4 157
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    En relisant toute la discussion, il nous manque des éléments:

    -Comment passes-tu en root (la commande) ?

    -Comment exécutes-tu ton installation de package (contexte tels depuis un terminal, ou depuis une interface graphique) ?

    -Est-ce que tu as le même souci au départ de l'installation du package ?
    Si pas de souci, peut-être devrais-tu sauver la donnée qui t'intéresses et la récupérer quand tu en as besoin...
    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

    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.

  13. #33
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Oui, car si tu n'as pas ce problème au départ, autant sauver la valeur pour la récupérer ensuite.
    Cordialement.

  14. #34
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 891
    Points : 4 157
    Points
    4 157
    Billets dans le blog
    1
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Démarrer tomcat en tant qu'utilisateur simple dans un script shell
    Par CinePhil dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 22/05/2015, 18h02
  2. Changement d'utilisateur courant dans la suppression en cascade
    Par alassanediakite dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 12/05/2015, 16h13
  3. [Framework] accéder à l'utilisateur courant dans un WebContext
    Par tchize_ dans le forum Spring
    Réponses: 5
    Dernier message: 29/06/2011, 11h04
  4. Réponses: 3
    Dernier message: 29/05/2010, 12h28
  5. Problem avec l'utilisateur courant dans SLQ
    Par soulsidibe dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/05/2006, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo