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.