路径有时会成为一个严重的安全问题。利用路径设置中的一些错误来入侵系统是一种非常常见的方法。如果黑客能让root用户或其他用户执行他自己版本的命令,就很容易发起木马攻击。
过去(?)一个常见的错误是在root用户的路径中保留'.'。恶意黑客在他的主目录中创建了一个名为'ls'的程序。如果root用户执行
# cd ~hacker
# ls
他就会执行黑客的ls命令。
间接地,这也适用于所有以root身份执行的程序。任何重要的守护进程都不应该执行任何其他用户可以写入的东西。在某些系统中,/usr/local/bin 允许包含安全性审查较少的程序 - 它只是从root用户的路径中删除。但是,如果已知某个守护进程使用路径 '/usr/local/bin/:...' 执行 'foo',则有可能欺骗守护进程执行 '/usr/local/bin/foo' 而不是 '/bin/foo'。很可能任何可以写入 '/usr/local/bin' 的人都能够入侵系统。
考虑路径中目录的顺序非常重要。 如果 /usr/local/bin 在 /bin 之前,则存在安全风险 - 如果它在之后,则不可能用 /usr/local/bin/foo 中的一些本地化修改来覆盖命令 /bin/foo。
在Linux中,应该记住路径评估是在操作系统调用级别完成的。 在任何给出可执行文件路径的地方,你都可以给出一个短名称,该名称至少从 /bin 和 /usr/bin 搜索 - 甚至可能从许多其他地方搜索。