• pour les geeks

    Une faille dans Bash ? - Tux-planet
    http://www.tux-planet.fr/une-faille-dans-bash

    Une faille dans Bash ?

    Kirils Solovjovs vient de mettre en évidence un comportement de Bash un peu bizarre. En effet, dans certaines conditions, le shell a tendance à interpréter des noms de fichiers comme des arguments. Voici quelques explications.

    On crée quelques dossiers et fichiers :

    $ mkdir -p test && cd test
    $ mkdir rep1 rep2
    $ touch fichier1 fichier2

    Si on liste le contenu, on les retrouve sans problème :

    $ ls
    fichier1 fichier2 rep1 rep2

    Maintenant, on crée deux fichiers spécifiques et on observe le résultat :

    $ touch — -r -f
    $ ls
    –f fichier1 fichier2 -r rep1 rep2

    On s’aperçoit que les fichiers -f et -r sont présents. Et ils peuvent être dangereux s’ils sont interprétés comme des arguments. On fait le test avec la commande rm et l’option -i qui permet de demander une confirmation avant suppression :

    $ rm -i *
    $ ls
    –f -r

    Et là bingo. Le shell Bash les interprète bien comme des arguments, et au lieu de faire un rm -i, il fait carrément un rm -rf.

    Bon cette faille n’est pas très dangereuse en elle-même, peu de gens feront cette erreur. Il faut quand même avoir l’idée de créer des fichiers nommés « -r » et « -f » avec la commande touch. Mais cela laisse un peu perplexe sur le comportement de Bash, qui ne fait pas la différence entre un nom de fichier et un argument.

    #linux #geek #bash #bug