Руководство пользователя Linux


Руководство пользователя Linux - стр. 85


/home/larry# clubly clubly: command not found (команда не найдена)

Заметьте, что моя переменная PATH не содержит текущую директорию, ".". Если бы она содержала ее, то она могла бы выглядеть следующим образом:

/home/larry# echo $PATH .:/home/larry/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/TeX/bin /home/larry#

Это является споpным моментом в Unix'овских кругах (теперь и вы их участник, хотите вы этого или нет). Проблема заключается в том, что включение в вашу переменную PATH текущего каталога может быть дырой в системе защиты. Предположим, что вы переходите (командой cd) в директорию, где кто-то оставил "троянского коня", программу под именем ls, и вы запускаете ls, что было бы естественно при входе в новую директорию. Поскольку текущая директория, ".", идет первой а вашей переменной PATH, то shell нашел бы именно эту версию программы ls и запустил бы ее. Какие только пакости нельзя поместить в эту программу, а вы буквально только что сами взяли и запустили ее. Типу, который написал ее, даже не нужно предоствалять какие-либо привилегии для этого, просто нужно выдать разрешение на директорию, где расположена "ложная" ls. Это даже может быть его домашняя директория, если он знает, что вы будете работать где-то около.

Вашей собственной системе очень не повезет, если с ней работают люди, оставляющие такие ловушки для других. Возможно, что все пользователи - ваши друзья или коллеги. Однако, в больших многопользовательских системах (например, в университетских) легко может оказаться несколько недружелюбных программистов, которых вы

- 113 -

никогда и не встречали. Так это или нет, хотите ли вы иметь такую возможность, используя "." в вашей PATH, зависит от ситуации; я не собираюсь быть догматичным, а просто хочу предупредить вас о возможном риске. (Помните, что вы всегда можете запускать программы из текущей директории, задав их более точно, например, "./foo".) Многопользовательские системы вообще представляют собой сообщества, где люди могут делать друг другу различные "подарки" всевозможными способами.




Начало  Назад  Вперед