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 :

Comment empêcher l'historisation d'une ou plusieurs commandes ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut Comment empêcher l'historisation d'une ou plusieurs commandes ?
    Bonjour,

    Est-il possible, et si oui comment, d'empêcher l'historisation d'une commande tapée dans un terminal ?

    Par exemple, je tape :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql -pmot_de_passe ma_base
    mais lors de la consultation des commandes précédemment tapées, je ne veux pas qu'on puisse voir cette commande. Le but par exemple est d'éviter que le mot de passe soit visible dans l'historique ! Bien entendu, je sais qu'il est possible de ne pas taper le mot de passe en clair mais c'est juste un exemple !

    Merci d'avance.

  2. #2
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonjour,

    Je suppose que le shell est Bash. La commande suivante va cacher le mot de passe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^\(mysql -p\)[^ ]*\(.*$\)/\1\*\*\*\*\*\*\2/' .bash_history
    Ce n'est pas très general, mais c'est un début...

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Citation Envoyé par jmelyn Voir le message
    Bonjour,

    Je suppose que le shell est Bash. La commande suivante va cacher le mot de passe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^\(mysql -p\)[^ ]*\(.*$\)/\1\*\*\*\*\*\*\2/' .bash_history
    Ce n'est pas très general, mais c'est un début...
    Salut,

    Merci pour ta réponse. Mais mon problème n'est pas de cacher le mot de passe (c'était juste un exemple). Ce que je veux c'est que la commande ne figure pas dans l'historique !

  4. #4
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Alors suffit de modifier la commande!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/^mysql -p.*/d' ~/.bashrc
    Est-ce suffisant?

  5. #5
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Il n'y a pas moyen d'empêcher une commande d'être tracée dans un historique.

    Le mieux (ou le moins pire) que tu puisses faire, c'est ce que propose jmelyn, c'est a dire de supprimer l'entrée dans le fichier d'historique.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  6. #6
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    En Bash, il est possible d'ignorer certaines commandes. Par exemple si je ne veux pas voir les ls, je définis la variable:
    qui évitera à l'historique d'enregitrer toutes les commandes (ou suite de commandes) qui commencent par "ls".
    Pour qu'un utilisateur ait ce comportement par défaut, il est nécessaire de définir la variable dans le fichier .bashrc.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Citation Envoyé par jmelyn Voir le message
    Alors suffit de modifier la commande!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/^mysql -p.*/d' ~/.bashrc
    Est-ce suffisant?
    N'est ce pas plutôt ~/.bash_history au lieu de ~/.bashrc ? La suppression se fait dans le fichier historique !

    Au fait, l'objectif est de supprimer ou alors ne pas enregistrer du tout la commande tapée. Ta méthode suppose qu'il faut trouver pour chaque commande tapée le motif correspondant, ce qui est assez fastidieux.

    Je pensais par exemple qu'il y avait un moyen de bloquer l'historisation peut être durant la session, le temps d'effectuer son travail et ensuite de la déploquer. Je dois en conclure que ce n'est peut être pas possible mais ça m'étonnerait quand même.

    En tout cas, merci pour vos réponses et je continue à chercher. Je reste aussi à l'écoute s'il y a d'autres idées !

  8. #8
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Oui, je me suis emmélé les pinceaux, je ne l'ai pas vu à la relecture (et il n'y avait que 3 lignes!): il s'agit bien de ~/.bash_history et non de ~/.bashrc.

    Ce que tu demandes maintenant est différent: supprimer l'historique durant une session, ce n'est plus supprimer une commande de l'historique. Voici deux méthodes similaires:

    • HISTFILE="/dev/null": c'est violent, pas d'historique même pour l'utilisateur.
    • HISTFILE="~/mon_historique_secret": cette méthode permet de conserver un historique mais de pouvoir le supprimer quand c'est nécessaire.

    J'espère que tu n'es pas un sys-admin qui vient de se faire virer et qui met en place une bombe à retardement!

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Citation Envoyé par jmelyn Voir le message
    Ce que tu demandes maintenant est différent: supprimer l'historique durant une session, ce n'est plus supprimer une commande de l'historique.
    !
    Peut être que le mot session est mal placé. L'idée est que les commandes que j'ai tapées ne soit pas accessibles par d'autres !

    Citation Envoyé par jmelyn Voir le message
    J'espère que tu n'es pas un sys-admin qui vient de se faire virer et qui met en place une bombe à retardement!
    Loin de là. Le truc est que tout simplement, il n'y pas qu'une seule personne qui dispose des infos root/pwd. Tu me diras que c'est du n'importe quoi certe côté sécurité ... mais vu qu'on ne désire pas qu'il n'y ait qu'une seule personne qui connaisse les params super-admin (pour éviter toute dépendance) alors plusieurs personne partagent ces infos. Voilà un peu pour te rassurer !

    Mais là, je ne veux pas que les commandes dans lesquelles je pourrais éventuellement taper des mots de passe soient lues par d'autres même s'ils ont le mdp root !

  10. #10
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Tu peux aussi regarder s'il n'existe pas une option de tes commandes demandant le mot de passe de maniere interactive. Dans ce cas, l'appel a la commande sera logge, mais pas le mot de passe.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  11. #11
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Là, ça devient de l'admin...

    Pour moi, chacun devrait avoir son login, donc impossibilité de voir l'historique d'autres personnes.

    Le mot de passe est celui du login mysql (client), pas de root, le mot de passe doit donc être différent!

    Bon, et la solution de rediriger l'historique vers un autre fichier c'est pas bon? Si tu veux détruire certaines lignes et pas d'autres, tu lances graphiquement un éditeur de texte et du vas modifier le fichier ~/.bash_history.

    Ici, nous sommes trois admins principaux et connaissons donc le mot de passe root de toutes nos machines Linux. Mais nous l'utilisons de moins en moins grâce aux clés ssh et à la commande sudo -i (sans mot de passe). Il y a des jours où je ne le tape même plus. Il arrivera peut-être un jour où nous le supprimerons...

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Citation Envoyé par gangsoleil
    Tu peux aussi regarder s'il n'existe pas une option de tes commandes demandant le mot de passe de maniere interactive. Dans ce cas, l'appel a la commande sera logge, mais pas le mot de passe.
    Pour mysql par exemple c'est possible (avec l'option -p sans mot de passe). Par contre, certains scripts nécessitent de passer les mdp en param lors de l'appel. et s'il faut réécrire tous ces scripts, je doute que ce soit la bonne solution !

    Citation Envoyé par jmelyn Voir le message
    Là, ça devient de l'admin...

    Pour moi, chacun devrait avoir son login, donc impossibilité de voir l'historique d'autres personnes.

    Le mot de passe est celui du login mysql (client), pas de root, le mot de passe doit donc être différent!
    Malheureusement, ce n'est pas fait ainsi et faut faire avec ...

    Citation Envoyé par jmelyn Voir le message
    Bon, et la solution de rediriger l'historique vers un autre fichier c'est pas bon?

    Oui mais la redéfinition de la variable d'environnement est la même (car c'est le même compte root) donc le pb demeure tjrs !

    Citation Envoyé par jmelyn Voir le message
    Si tu veux détruire certaines lignes et pas d'autres, tu lances graphiquement un éditeur de texte et du vas modifier le fichier ~/.bash_history.
    Justement, j'ai eu à le faire mais cette solution n'est pas propre car comme je l'ai dit faut éditer à chaque fois ! Mais bon ...

  13. #13
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    J'ai pensé à un truc :

    1) Je fais une sauvegarde du fichier ~/.bash_history ==> ~/.bash_history.bkp
    2) Je fais mon travail, tape mes commandes (à ce stade elles sont écrites dans ~/.bash_history)
    3) Une fois le travail terminé, je restaure le fichier ~/.bash_history.bkp (et donc le fichier ~/.bash_history est écrasé)

    Le pb c'est que je retrouve (même après ré-ouverture du terminal) les commandes précédement tapées ! Pourquoi ?

  14. #14
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Citation Envoyé par hisoft Voir le message
    J'ai pensé à un truc :

    1) Je fais une sauvegarde du fichier ~/.bash_history ==> ~/.bash_history.bkp
    2) Je fais mon travail, tape mes commandes (à ce stade elles sont écrites dans ~/.bash_history)
    3) Une fois le travail terminé, je restaure le fichier ~/.bash_history.bkp (et donc le fichier ~/.bash_history est écrasé)

    Le pb c'est que je retrouve (même après ré-ouverture du terminal) les commandes précédement tapées ! Pourquoi ?
    Selon le shell utilise, les commandes ne sont pas historisees au meme moment. En bash, l'ecriture sur disque ne se fait pas reellement tant que tu n'as pas quitté le terminal (s'il plante par exemple, tu n'auras pas d'historisation).
    En ksh par contre, la commande est historisee avant son execution.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. Comment empêcher la modification d'une vue
    Par khayyam90 dans le forum Administration
    Réponses: 1
    Dernier message: 13/02/2010, 22h43
  2. [XHTML 1.0] Comment empêcher le contenu d'une page html?
    Par kaselander dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 21/02/2009, 17h13
  3. Empêcher le show d'une windowform plusieur fois
    Par tsdia2 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/05/2008, 12h40
  4. Réponses: 9
    Dernier message: 29/11/2007, 19h37

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