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. #1
    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 Obtenir l'utilisateur courant dans un script de postinstallation d'un paquet
    Bonjour,

    Au sein d'un script de post-installation d'un paquet, j'ai besoin de connaître l'utilisateur courant.
    logname ou $LOGNAME me renvoie bien la bonne information sous Debian, mais sous Ubuntu ça renvoie une chaîne vide.
    A quoi est due cette différence de comportement entre Debian et Ubuntu ?

    Comment obtenir l'utilisateur courant aussi bien sous Ubuntu que sous Debian ?
    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.

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 275
    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 275
    Points : 12 710
    Points
    12 710
    Par défaut
    Bonjour,

    En principe, id -un devrait le faire.
    Cordialement.

  3. #3
    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 de tester, et c'est en fait moins fiable que logname.
    Quand je passe en root dans un terminal, id -un me renvoie root alors que logname me renvoie bien l'utilisateur courant.
    Et ce, aussi bien sous Debian que sous Ubuntu.
    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.

  4. #4
    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
    ɹǝsn *sıɹɐlos*

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 429
    Points : 43 052
    Points
    43 052
    Par défaut
    renverra root.

    La seconde solution est plus fiable.

    Tu peux aussi de baser sur les variables d’environnement USER et HOME.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    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 on passe complètement sous root sous Ubuntu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $ whoami
    jlliagre
    $ sudo su -
    #
    Ce qui ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # whoami
    root
    # echo $LOGNAME
    root
    # echo $HOME
    /root
    # id -un
    root
    Ce qui marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # logname
    jlliagre
    # who am i | cut -d " " -f 1
    jlliagre
    ɹǝsn *sıɹɐlos*

  7. #7
    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
    Sous Ubuntu, lorsqu'on passe complètement en root, logname et who -m fonctionnent.
    Mais dès que cet appel se fait depuis un script de post-installation d'un paquet, là ça renvoie une chaîne vide, alors qu'il n'y a pas ce problème sous Debian.

    Une discussion intéressante sur ce problème ici: https://stackoverflow.com/questions/...nd-su-commands

    Je n'ai pas testé les fonctions proposées. Il me faudra déjà un peu de temps pour bien les comprendre compte-tenu de mon niveau en script bash.

    En revanche, j'ai constaté ceci, depuis le script de post-installation:
    who -m renvoie une chaîne vide
    who me renvoie 2 lignes, les deux avec l'utilisateur courant, et pas root

    On peut envisager une fonction extrayant l'utilisateur courant depuis l'examen de ce que renvoie who. Mais si un second utilisateur a ouvert une session, comment savoir lequel est l'utilisateur courant dans les lignes renvoyées par who ? Les infos renvoyées le permettent-elles ?
    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. #8
    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 de tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    who am i | cut -d " " -f 1
    depuis le script de post-installation du paquet, et ça me renvoie également une chaîne vide sous Ubuntu.
    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. #9
    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
    salut,

    Citation Envoyé par Philippe Dpt35 Voir le message
    Quand je passe en root dans un terminal, id -un me renvoie root
    et id -run ?

  10. #10
    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 BufferBob Voir le message
    salut,


    et id -run ?
    Pas mieux que id -un
    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. #11
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Est-ce que la variable d'environnement $UID est valorisée ? $SUDO_UID ? $SUDO_USER ?

    Je ne connaissais pas 'who am i', j'utilise whoami tout collé.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  12. #12
    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
    Dans un terminal après être passé totalement en root, $UID renvoie 0, donc root.

    Quant à l'interrogation de $SUDO_UID et $SUDO_USER, ils ne sont pas envisageables. Sous Debian, sudo n'est pas installé par défaut.
    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. #13
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 275
    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 275
    Points : 12 710
    Points
    12 710
    Par défaut
    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...
    Cordialement.

  14. #14
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Citation Envoyé par Philippe Dpt35 Voir le message
    Dans un terminal après être passé totalement en root, $UID renvoie 0, donc root.

    Quant à l'interrogation de $SUDO_UID et $SUDO_USER, ils ne sont pas envisageables. Sous Debian, sudo n'est pas installé par défaut.
    Tu constates que debian et ubuntu ne sont pas pareils, mais tu ne veux quand même pas gérer chaque cas différemment ?
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  15. #15
    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
    et ça ça fonctionne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps -o user= $(awk '{print $6}' /proc/self/stat)
    (le 6e champs de /proc/PID/stat est le SID, session ID)

  16. #16
    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
    @ggnore
    J'essaie d'abord de voir s'il n'y a pas une solution générique.
    A défaut, je ferai effectivement un traitement différent.
    Ma formulation "$SUDO_UID et $SUDO_USER, ils ne sont pas envisageables" était effectivement dans ce sens trop catégorique.
    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.

  17. #17
    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
    On peut envisager une fonction extrayant l'utilisateur courant depuis l'examen de ce que renvoie who. Mais si un second utilisateur a ouvert une session, comment savoir lequel est l'utilisateur courant dans les lignes renvoyées par who ? Les infos renvoyées le permettent-elles ?
    Non. Si logname ne renvoie rien, c'est que le script de post installation s'est complètement déconnecté du contexte de l'utilisateur courant. Le "su -" substitue le compte utilisateur par celui de root mais la commande logname (ou "who am i/who -m") arrivent encore à le retrouver en regardant qui est logué sur le tty associé à la commande.

    Sous Ubuntu, la commande d'installation du package se détache de ce tty (ce qu'on peut faire avec "nohup" par exemple). Il n'existe donc plus de méthode simple pour retrouver qui a lancé la commande originale en dehors de regarder qui est logué, mais ce n'est pas très fiable.

    En fait, la commande logname elle-même n'est pas fiable à 100% non plus. Un utilisateur qui a les droits d'installer un package peut se faire passer pour un autre en magouillant avec les redirections.

    Seule une trace de toutes les exécutions, par exemple à l'aide du framework d'audit, permettrait de déterminer qui a lancé quoi en remontant le séquencement des processus.
    ɹǝsn *sıɹɐlos*

  18. #18
    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
    (...) Il n'existe donc plus de méthode simple pour retrouver qui a lancé la commande originale en dehors de regarder qui est logué, mais ce n'est pas très fiable.
    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

  19. #19
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Pourquoi ne pas valoriser une variable avant de sudo et l'utiliser après la section sudo ?
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  20. #20
    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 de tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps -o user= $(awk '{print $6}' /proc/self/stat)
    en script de post install, là également le retour est vide.
    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 1 sur 2 12 DernièreDernière

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, 17h02
  2. Changement d'utilisateur courant dans la suppression en cascade
    Par alassanediakite dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 12/05/2015, 15h13
  3. [Framework] accéder à l'utilisateur courant dans un WebContext
    Par tchize_ dans le forum Spring
    Réponses: 5
    Dernier message: 29/06/2011, 10h04
  4. Réponses: 3
    Dernier message: 29/05/2010, 11h28
  5. Problem avec l'utilisateur courant dans SLQ
    Par soulsidibe dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/05/2006, 14h02

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