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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 62
    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 : 62
    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 : 62
    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 : 62
    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!

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, 23h43
  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, 18h13
  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, 13h40
  4. Réponses: 9
    Dernier message: 29/11/2007, 20h37

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