Le mécanisme de PATH est souvent un gros problème du point de vue sécurité. Utiliser une erreur dans la définition du PATH est une manière fréquente de pirater un système. Il est facile pour un pirate de fabriquer des chevaux de Troie, s'il arrive à forcer root ou un autre utilisateur à exécuter ses propres programmes.
Une erreur fréquente par le passé (?) était de laisser
le répertoire courant '.' dans le PATH de l'utilisateur root.
Un pirate malveillant peut alors créer
son propre programme 'ls'
dans son répertoire.
Ensuite, si root fait :
# cd ~pirate # lsil exécute le programme du pirate...
De la même façon, cela s'applique à tous les programmes
exécutés par root. Aucun important démon ne devrait
exécuter quoi que ce soit qui puisse
être modifié par un utilisateur. Dans certains systèmes,
/usr/local/bin
peut contenir des programmes jugés moins
sûr, mais le répertoire est retiré du PATH de root.
Cependant, si on sait qu'un démon exécute bidule
avec 'PATH=/usr/local/bin:...', il est possible
de tromper le démon en lui faisant exécuter
/usr/local/bin/bidule
à la place
de /bin/bidule
. Dans ce cas, n'importe qui pouvant écrire dans
/usr/local/bin
peut sûrement pirater le système.
Il est donc très important de faire attention à l'ordre dans
lequel les répertoires sont placés dans le PATH.
Si /usr/local/bin
se trouve avant /bin
,
il y a un risque. Alors que s'il se trouve après, il est impossible
de lancer la commande modifiée /usr/local/bin/bidule
à la place de /bin/bidule
.
Sous Linux, vous devez vous souvenir que la recherche dans le PATH est
faîte dans tous les mécanismes d'appels du système
d'exploitation. N'importe où, où le chemin d'un
exécutable est donné, vous pouvez utiliser le nom de
la commande seul qui sera alors cherchée au moins dans /bin
et /usr/bin
, et vraisemblablement dans beaucoup d'autres endroits.