Внутреннее устройство Linux
Шрифт:
Локальное хранилище намного быстрее для задач, вовлекающих множество маленьких файлов, например при компиляции пакетов ПО или при запуске среды рабочего стола. Картина усложняется для большой сети, в которой множество пользователей имеют доступ ко многим различным компьютерам, поскольку в этом случае необходим компромисс между удобством, производительностью и простотой администрирования.
13. Пользовательское окружение
Основной акцент этой книги сделан на системе Linux, которая обычно лежит в основе серверных процессов и интерактивных сеансов пользователя. В конечном итоге система и пользователь должны где-либо встретиться.
Большинство пользователей не уделяют пристального внимания файлам запуска, затрагивая их только тогда, когда необходимо добавить что-либо в целях удобства, например псевдоним. Со временем эти файлы засоряются лишними переменными окружения и проверками, это может привести к раздражающим ошибкам или (довольно серьезным) проблемам.
Если вы уже пользуетесь некоторое время Linux, то могли заметить, что ваш домашний каталог постепенно накапливает невообразимо большое количество файлов запуска. Они иногда называются файлами с точкой, поскольку их имена практически всегда начинаются с точки (.). Многие из них создаются автоматически, когда вы впервые запускаете какую-либо программу, и вам никогда не понадобится менять их. В данной главе рассматриваются главным образом файлы запуска оболочки, которые вам, скорее всего, придется изменять или создавать с нуля. Посмотрим, насколько аккуратно следует работать с такими файлами.
13.1. Рекомендации по созданию файлов запуска
При создании файлов запуска думайте о пользователе. Если вы являетесь единственным пользователем компьютера, вам не о чем излишне беспокоиться, поскольку ошибки будут касаться только вас и они достаточно просты в устранении. Однако, если вы создаете файлы запуска, которые будут применяться по умолчанию для всех новых пользователей компьютера или сети, или же вы рассчитываете на то, что кто-либо скопирует такие файлы для использования на другом компьютере, ваша задача становится существенно сложнее. Если вы сделаете ошибку в файле запуска, предназначенном для десяти пользователей, вам придется исправлять ее десять раз.
При создании файлов запуска для других пользователей придерживайтесь следующих принципов.
• Простота. Старайтесь, чтобы количество файлов запуска было небольшим, сами файлы были бы маленькими, насколько это возможно, простыми для изменения и надежными. Каждый элемент в файле запуска является всего лишь еще одним компонентом, который может выйти из строя.
• Читаемость. Создавайте обширные комментарии в файлах, чтобы пользователи получили полное представление о том, что выполняет каждая часть файла.
13.2. Когда изменять файлы запуска
Прежде чем выполнить изменение в файле запуска, задайте себе вопрос, действительно ли это изменение необходимо. Вот несколько веских оснований для изменения файлов запуска.
• Необходимо изменить приглашение по умолчанию.
• Необходимо приспособить какое-либо ПО, установленное локально. Попробуйте, однако, для начала использовать сценарии обертки.
• Существующие файлы запуска неисправны.
Если в вашей системе все работает нормально, будьте осторожны. Иногда файлы запуска,
И все же вы, вероятно, не стали бы читать эту главу, если вам неинтересно изменять настройки по умолчанию. Давайте разберемся, что же важно.
13.3. Элементы файла запуска оболочки
Что входит в состав файла запуска оболочки? Некоторые элементы могут показаться очевидными, например настройки пути и приглашения. Но что именно должно быть указано в качестве пути и как выглядит приемлемое приглашение? Какое количество элементов будет излишним для размещения в файле запуска?
В нескольких следующих разделах рассмотрены основы файла запуска оболочки — начиная с командного пути, приглашения, псевдонимов и заканчивая маской прав доступа.
13.3.1. Командный путь
Самой важной частью любого файла запуска является командный путь. Этот путь должен охватывать каталоги, которые содержат приложения, представляющие интерес для обычного пользователя. По меньшей мере этот путь должен содержать следующие элементы в указанном порядке:
/usr/local/bin
/usr/bin
/bin
Такой порядок гарантирует, что вы сможете переопределить стандартные команды по умолчанию с помощью локальных вариантов, расположенных в каталоге /usr/local.
В большинстве версий Linux исполняемые файлы практически для всех пакетов ПО помещаются в каталог /usr/bin. Иногда бывают исключения, например при размещении игр в каталоге /usr/games, а графических редакторов — в отдельном каталоге, поэтому сначала проверьте настройки вашей системы по умолчанию. Убедитесь также в том, что каждая из системных команд общего пользования доступна в каком-либо из перечисленных выше каталогов. Если это не так, то ваша система, вероятно, вышла из-под контроля. Не меняйте путь по умолчанию для вашей среды пользователя, чтобы подстроиться под каталог установки нового ПО. Простой способ учесть отдельные каталоги установки — использование символических ссылок в каталоге /usr/local/bin.
Многие пользователи применяют каталог bin для хранения собственных сценариев оболочки и команд, поэтому может потребоваться добавить его в самое начало пути:
$HOME/bin
примечание
По новому соглашению двоичные файлы помещают в каталог $HOME/.local/bin.
Если вам интересны системные утилиты (такие как traceroute, ping и lsmod), добавьте в путь каталоги sbin:
/usr/local/sbin
/usr/sbin
/sbin
Добавление точки (.) в путь
Есть один небольшой, но противоречивый компонент командного пути — точка. Если поместить точку (.) в пути, то это позволит запускать команды в текущем каталоге, не используя символы ./ перед именем команды. Это может оказаться удобным при написании сценариев или при компиляции программ, однако такой способ плох по двум причинам.
• Могут появиться проблемы с безопасностью. Никогда не следует помещать точку в начале пути. Вот что при этом может произойти: взломщик может поместить вирус-троян с именем ls в архив, распространяемый через Интернет. Даже если точка окажется в конце пути, вы по-прежнему будете уязвимы для таких опечаток, как sl или ks.