Соображения безопасности

Иногда path представляет проблему безопасности. Очень часто систему взламывают используя ошибки в настройке пути. Очень просто внедрить троянского коня, если крекер сможет заставить запустить root или других пользователей его версии команд.

В прошлом очень частой ошибкой было установить '.' в пути пользователя root. Злобный крекер создавал программу 'ls' в его домашней директории. Если root делал:

# cd ~hacker
# ls

то этим самым он исполнят крекерскую версию ls.

Неявно, эта брешь безопасности действует и для всех программ, которые исполняются от имени root. Любой важный демон никогда не должен исполнять чего либо, что может модифицироваться другим пользователем. На некоторых системах /usr/local/bin может содержать программы, не подвергающиеся жесткому контролю -- эта директория просто удалена из пути root. В тоже время, если известно, что некий демон исполняет команду 'foo' и использует путь '/usr/local/bin:...', возможно обмануть его заставив исполнить /'usr/local/bin/foo' вместо '/bin/foo'. Практически любой кто имеет доступ на запись к '/usr/local/bin' сможет взломать систему.

Очень важно обдумать в каком порядке располагаются директории в path. Если /usr/local/bin находиться перед /bin, это брешь в безопасности, если после, то перекрыть команду /bin/foo при помощи модифицированной версии в /usr/local/bin/foo станет невозможно.

В Линукс вы должны помнить, что обработка path происходит на уровне системного вызова. Везде где задан путь поиска исполнимого файла, вы можете использовать короткое имя, поиск которого будет произведен по крайней мере в /bin и /usr/bin - и, вероятно, во многих других местах.