$PATH: поиск небезопасных директорий и дубликатовПеременная
$PATH определяет, где shell ищет исполняемые файлы. Один лишний каталог - и вместо системной утилиты может запуститься совсем другая программа.Именно поэтому
$PATH стоит периодически проверять.▪️Посмотреть порядок поиска
echo "$PATH" | tr ':' '\n'
Shell просматривает каталоги сверху вниз. Если команда встречается в нескольких местах, будет использована первая найденная.▪️Поиск дубликатов
Повторяющиеся каталоги не ломают систему, но замедляют поиск команд и усложняют отладку:
echo "$PATH" | tr ':' '\n' | sort | uniq -d
Если вывод не пустой - есть дубликаты.▪️Опасные записи
Особое внимание стоит обратить на:
.
./bin
/tmp
/var/tmp
/home/user/bin
Каталог . означает “текущая директория”. Если он находится в
$PATH, достаточно оказаться в папке с вредоносным файлом ls или ssh, чтобы по ошибке запустить его вместо системной утилиты.▪️Проверка прав доступа
Даже “нормальный” каталог может быть проблемой, если в него могут писать другие пользователи:
find $(echo "$PATH" | tr ':' ' ') \
-maxdepth 0 -perm -0002 -ls 2>/dev/null
World-writable директории в $PATH - серьёзный повод для проверки.▪️Какая команда будет запущена?
Не всегда очевидно, какой бинарник использует shell:
type -a python
илиwhich -a python
Это покажет все найденные версии в порядке поиска.▪️Почему это важно
Ошибки в
$PATH могут приводить не только к странному поведению скриптов, но и к компрометации системы. Несколько минут аудита помогут обнаружить небезопасные каталоги, лишние записи и потенциальную подмену исполняемых файлов ещё до того, как это станет проблемой.BashTex 📱 #bash #linux