TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #596 571
Аудит переменной $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
  • 👍 3
More from @bash_tex
  1. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  2. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  3. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  4. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  5. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
  6. Sep 30, 2026DEBUG trap - как Bash выполняет код перед каждой командой В Bash есть специальный DEBUG tr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →