Управление пользовательской средой
Среди проблем, с которыми сталкиваются новички в Linux, управление переменными окружения пользователя может оказаться самым сложным. Хотя в операционных системах Windows есть переменные окружения, большинство пользователей редко, если вообще когда-либо, ими управляют. Чтобы максимально эффективно использовать нашу систему взлома Linux, необходимо понимать и управлять переменными окружения для достижения оптимальной производительности, удобства и, возможно, даже скрытности.
Эти переменные окружения используются в нашей пользовательской среде. В большинстве случаев такой средой будет оболочка BASH. У каждого пользователя, включая root, есть набор переменных окружения, значения которых по умолчанию остаются неизменными. Вы можете изменить эти значения, чтобы повысить эффективность работы системы и настроить рабочую среду в соответствии с вашими индивидуальными потребностями.
Просмотреть наши переменные среды
Давайте начнем с просмотра всех переменных среды, введя env;
Обратите внимание, что все переменные окружения указаны в ЗАГЛАВНОМ РЕГИСТРЕ, например, HOME, PATH, SHELL и т. д. Как вы увидите далее в этой главе, вы можете создавать свои собственные пользовательские переменные (см. ниже), и если вы это сделаете, желательно (но не обязательно), чтобы они также были указаны в ЗАГЛАВНОМ РЕГИСТРЕ.
Кроме того, мы можем просмотреть все переменные, а также любые определенные пользователем переменные или псевдонимы команд, введя набор команд.
Эта команда выводит список множества переменных, уникальных для нашей системы. В большинстве случаев этот список настолько длинный, что его невозможно отобразить на одной странице. Чтобы просмотреть все эти переменные построчно, можно передать вывод команде more, например:
Теперь список переменных занимает один экран и останавливается, ожидая нажатия клавиши ENTER для перехода на следующую строку. Вы можете делать это, пока не найдёте нужную переменную. Если нажать клавишу ENTER несколько раз, мы найдём переменную с именем HISTSIZE. Нажатие клавиши ENTER проведёт вас по всем этим переменным, одну за другой. Всякий раз, когда вы используете команду more для вывода данных, вы можете использовать клавишу q для выхода или возврата в командную строку.
Вместо того, чтобы утомительно прокручивать этот длинный список переменных в поисках нужной, вы можете воспользоваться фильтрующей командой grep. Например, как вы видели выше, есть переменная HISTSIZE. Эта переменная содержит количество команд, сохранённых в файле истории команд. То есть, команды, которые вы вводили ранее и которые можно вызвать с помощью стрелок ВВЕРХ и ВНИЗ в оболочке BASH.
Давайте попробуем найти его, используя set и отфильтровав вывод с помощью grep, чтобы найти переменную HISTSIZE.
Как видите выше, эта команда находит переменную HISTSIZE и отображает её значение. Значение этой переменной по умолчанию в вашей системе равно 1000. Это означает, что переменная HISTSIZE по умолчанию хранит ваши последние 1000 команд.
Просмотр значений переменных
Команда set отображает все имена ваших переменных, но если вы хотите увидеть значение, сохраненное в переменной, вы можете использовать ключевое слово echo, за которым следует знак доллара $ и имя переменной, например:
Важно отметить, что если вы хотите использовать значение, хранящееся внутри переменной, как в данном случае, перед именем переменной необходимо поставить символ $. Знак доллара ($) перед именем переменной указывает на то, что вы хотите работать со значением внутри переменной, а не с её меткой.
Как я уже отмечал выше, переменная HISTSIZE содержит значение количества команд, хранящихся в файле истории. Как видно на этом снимке экрана, переменная HISTSIZE установлена на 1000. В некоторых случаях нам может НЕ хотеться, чтобы наши предыдущие команды сохранялись в файле истории. Это может быть связано с тем, что вы не хотите оставлять никаких следов своей активности в системе. В этом случае вы можете установить переменную HISTSIZE на 0, и система НЕ будет сохранять предыдущие команды.
Теперь, когда мы пытаемся использовать стрелки «ВВЕРХ» или «ВНИЗ» для вызова команд, ничего не происходит, поскольку система больше не хранит наши команды. Скрытно, но неудобно.
Экспорт наших переменных среды
Изменение переменной окружения действует только для этой конкретной среды. В данном случае этой средой является оболочка BASH. Это означает, что после закрытия терминала все изменения этих переменных будут потеряны или возвращены к значению по умолчанию. Чтобы сохранить значение для следующего и последующего сеансов работы с терминалом, необходимо экспортировать переменную. Это можно представить как «экспорт» нового значения из текущей среды (оболочки BASH) в остальную часть системы, чтобы оно было доступно в любой среде.
Это можно сделать, просто введя export, а затем имя переменной, например:
Теперь, когда мы покидаем эту среду и возвращаемся позже, переменная HISTSIZE устанавливается в 0. Конечно, мы можем вернуть переменной HISTSIZE значение 1000, просто введя:
Изменение приглашения оболочки
Приглашение оболочки по умолчанию в Kali имеет следующий формат:
имя_пользователя@имя_хоста:текущий_каталог>
Если вы являетесь пользователем root, это означает приглашение по умолчанию:
root@kali:current_directory
Мы можем изменить командную строку по умолчанию, установив значение переменной PS1. Эта переменная содержит набор заполнителей для информации, которая должна быть помещена в строку. К ним относятся:
u =имя текущего пользователя
h = имя хоста
W= текущий рабочий каталог
Давайте немного поиграем и изменим приглашение в нашем терминале. Переменная окружения, содержащая приглашение для первого терминала, — PS1. Её можно изменить, введя:
Теперь каждый раз, когда вы открываете терминал, вам напоминают, что вы — «Лучший хакер в мире».
Помните, что теперь при каждом открытии первого терминала (PS1) будет отображаться приглашение «World's Best Hacker», но второй терминал по-прежнему будет командной строкой по умолчанию. Это значит, что если нам действительно нравится эта новая командная строка, и мы хотим её сохранить, нам нужно экспортировать её, чтобы при каждом открытии этого или любого другого терминала выводилось приглашение «World's Best Hacker: #».
Изменение нашей переменной пути
Вероятно, самая важная переменная в нашей среде — это переменная PATH. Эта переменная управляет тем, где оболочка ищет вводимые вами команды, такие как cd, ls, echo и т. д. (обычно они находятся в подкаталогах sbin или bin, например, /usr/local/sbin или usr/local/bin). Если оболочка BASH не находит команду ни в одном из каталогов, указанных в нашем пути, она возвращает ошибку «команда не найдена», даже если она существует в другом каталоге, не указанном в нашем пути.
Давайте посмотрим на содержимое нашей переменной PATH, выполнив команду echo-request ее содержимое:
Обратите внимание на каталоги, включённые в нашу переменную PATH. Обычно это каталоги /bin и /sbin, где находятся наши системные команды. Когда мы вводим ls, система понимает, что нужно искать команду ls в каждом из этих каталогов, и когда это происходит, она выполняет её.
Если бы мы скачали и установили новый хакерский инструмент под названием «newhackingtool» в каталог /root/newhackingtool, мы смогли бы использовать его только находясь в этом каталоге. Это означает, что каждый раз, когда мы захотим использовать этот инструмент, нам пришлось бы сначала переходить в /root/newhackingtool. Это, возможно, и неплохо, но немного неудобно. Чтобы использовать этот новый инструмент из ЛЮБОГО каталога, можно просто добавить этот каталог в переменную PATH.
Чтобы добавить этот каталог newhackingtool в нашу переменную PATH, вы можете ввести:
В этой команде вы говорите: «взять переменную PATH (PATH) и присвоить ей (=) значение старой переменной PATH ($PATH) и добавить /root/newhackingtool».
Важно отметить, что мы добавили каталог /root/newhackingtool в переменную PATH. Если вы теперь вернётесь и проверите содержимое переменной PATH, вы увидите, что этот каталог добавлен в конец переменной PATH.
Это означает, что для запуска newhackingtool вам не нужно переходить в каталог /root/newhackingtool. Теперь вы можете запускать приложения newhackingtool из любой точки системы. Оболочка BASH теперь будет искать наш новый инструмент в этом каталоге!
Распространенная ошибка новичков в Linux — назначение нового каталога /root/newhackingtool переменной PATH, например:
kali > PATH=/root/newhackingtool
кали > эхо $PATH
/root/newhackingtool
Теперь ваша команда PATH содержит ТОЛЬКО каталог /root/newhackingtool, а не каталоги системных исполняемых файлов, такие как /bin, /sbin и другие. Это НЕхорошо. В этом случае при попытке выполнить любую системную команду вы, скорее всего, получите ошибку «команда не найдена» (если только вы не находитесь в каталогах системных исполняемых файлов в момент её выполнения, что маловероятно).
кали > cd
bash: cd: команда не найдена
кали >
Помните, что вам нужно добавить значение к переменной PATH, а не заменить его.
Это может быть очень полезным приемом для каталогов, которые мы часто используем, но будьте осторожны и не добавляйте слишком много каталогов в переменную PATH, так как системе придется просматривать каждый каталог в PATH, чтобы найти команды, что может потенциально замедлить работу вашего терминала и вашу работу.
Создание новой пользовательской переменной
Вы можете создавать собственные пользовательские переменные в Linux, просто присваивая значение новой переменной. Синтаксис довольно прост: сначала имя переменной, затем символ присваивания «=» и, наконец, значение переменной, например:
kali > MYNEWVARIABLE = «Хакерство — самый ценный навык в 21 веке»
Теперь, чтобы увидеть значение этой переменной, вы можете использовать команду echo, за которой следует символ $ и имя переменной.
kali > echo $MYNEWVARIABLE
Хакерство — самый ценный навык в 21 веке.
Если вы затем захотите удалить эту новую переменную или любую системную или пользовательскую переменную, вы можете использовать команду unset. При удалении системной переменной следует соблюдать осторожность, так как после этого ваша система, скорее всего, будет работать совершенно иначе.
kali > unset MYNEWVARIABLE
kali > echo $MYNEWVARIABLE
кали >
Когда вы отменили MYNEWVARIABLE, вы её удалили. Теперь при попытке выполнить команду echo для этой же переменной Linux вернёт пустую строку.
Хотя переменные окружения могут показаться немного непонятными, они могут управлять настройками и внешним видом вашей рабочей среды в Linux. Вы можете управлять ими, чтобы адаптировать нашу среду к своим потребностям, изменяя любую из этих переменных и экспортируя их. Кроме того, мы можем создавать новые переменные для управления вашей системой.
Среди проблем, с которыми сталкиваются новички в Linux, управление переменными окружения пользователя может оказаться самым сложным. Хотя в операционных системах Windows есть переменные окружения, большинство пользователей редко, если вообще когда-либо, ими управляют. Чтобы максимально эффективно использовать нашу систему взлома Linux, необходимо понимать и управлять переменными окружения для достижения оптимальной производительности, удобства и, возможно, даже скрытности.
Эти переменные окружения используются в нашей пользовательской среде. В большинстве случаев такой средой будет оболочка BASH. У каждого пользователя, включая root, есть набор переменных окружения, значения которых по умолчанию остаются неизменными. Вы можете изменить эти значения, чтобы повысить эффективность работы системы и настроить рабочую среду в соответствии с вашими индивидуальными потребностями.
Просмотреть наши переменные среды
Давайте начнем с просмотра всех переменных среды, введя env;
Обратите внимание, что все переменные окружения указаны в ЗАГЛАВНОМ РЕГИСТРЕ, например, HOME, PATH, SHELL и т. д. Как вы увидите далее в этой главе, вы можете создавать свои собственные пользовательские переменные (см. ниже), и если вы это сделаете, желательно (но не обязательно), чтобы они также были указаны в ЗАГЛАВНОМ РЕГИСТРЕ.
Кроме того, мы можем просмотреть все переменные, а также любые определенные пользователем переменные или псевдонимы команд, введя набор команд.
Эта команда выводит список множества переменных, уникальных для нашей системы. В большинстве случаев этот список настолько длинный, что его невозможно отобразить на одной странице. Чтобы просмотреть все эти переменные построчно, можно передать вывод команде more, например:
Теперь список переменных занимает один экран и останавливается, ожидая нажатия клавиши ENTER для перехода на следующую строку. Вы можете делать это, пока не найдёте нужную переменную. Если нажать клавишу ENTER несколько раз, мы найдём переменную с именем HISTSIZE. Нажатие клавиши ENTER проведёт вас по всем этим переменным, одну за другой. Всякий раз, когда вы используете команду more для вывода данных, вы можете использовать клавишу q для выхода или возврата в командную строку.
Вместо того, чтобы утомительно прокручивать этот длинный список переменных в поисках нужной, вы можете воспользоваться фильтрующей командой grep. Например, как вы видели выше, есть переменная HISTSIZE. Эта переменная содержит количество команд, сохранённых в файле истории команд. То есть, команды, которые вы вводили ранее и которые можно вызвать с помощью стрелок ВВЕРХ и ВНИЗ в оболочке BASH.
Давайте попробуем найти его, используя set и отфильтровав вывод с помощью grep, чтобы найти переменную HISTSIZE.
Как видите выше, эта команда находит переменную HISTSIZE и отображает её значение. Значение этой переменной по умолчанию в вашей системе равно 1000. Это означает, что переменная HISTSIZE по умолчанию хранит ваши последние 1000 команд.
Просмотр значений переменных
Команда set отображает все имена ваших переменных, но если вы хотите увидеть значение, сохраненное в переменной, вы можете использовать ключевое слово echo, за которым следует знак доллара $ и имя переменной, например:
Важно отметить, что если вы хотите использовать значение, хранящееся внутри переменной, как в данном случае, перед именем переменной необходимо поставить символ $. Знак доллара ($) перед именем переменной указывает на то, что вы хотите работать со значением внутри переменной, а не с её меткой.
Как я уже отмечал выше, переменная HISTSIZE содержит значение количества команд, хранящихся в файле истории. Как видно на этом снимке экрана, переменная HISTSIZE установлена на 1000. В некоторых случаях нам может НЕ хотеться, чтобы наши предыдущие команды сохранялись в файле истории. Это может быть связано с тем, что вы не хотите оставлять никаких следов своей активности в системе. В этом случае вы можете установить переменную HISTSIZE на 0, и система НЕ будет сохранять предыдущие команды.
Теперь, когда мы пытаемся использовать стрелки «ВВЕРХ» или «ВНИЗ» для вызова команд, ничего не происходит, поскольку система больше не хранит наши команды. Скрытно, но неудобно.
Экспорт наших переменных среды
Изменение переменной окружения действует только для этой конкретной среды. В данном случае этой средой является оболочка BASH. Это означает, что после закрытия терминала все изменения этих переменных будут потеряны или возвращены к значению по умолчанию. Чтобы сохранить значение для следующего и последующего сеансов работы с терминалом, необходимо экспортировать переменную. Это можно представить как «экспорт» нового значения из текущей среды (оболочки BASH) в остальную часть системы, чтобы оно было доступно в любой среде.
Это можно сделать, просто введя export, а затем имя переменной, например:
Теперь, когда мы покидаем эту среду и возвращаемся позже, переменная HISTSIZE устанавливается в 0. Конечно, мы можем вернуть переменной HISTSIZE значение 1000, просто введя:
Изменение приглашения оболочки
Приглашение оболочки по умолчанию в Kali имеет следующий формат:
имя_пользователя@имя_хоста:текущий_каталог>
Если вы являетесь пользователем root, это означает приглашение по умолчанию:
root@kali:current_directory
Мы можем изменить командную строку по умолчанию, установив значение переменной PS1. Эта переменная содержит набор заполнителей для информации, которая должна быть помещена в строку. К ним относятся:
u =имя текущего пользователя
h = имя хоста
W= текущий рабочий каталог
Давайте немного поиграем и изменим приглашение в нашем терминале. Переменная окружения, содержащая приглашение для первого терминала, — PS1. Её можно изменить, введя:
Теперь каждый раз, когда вы открываете терминал, вам напоминают, что вы — «Лучший хакер в мире».
Помните, что теперь при каждом открытии первого терминала (PS1) будет отображаться приглашение «World's Best Hacker», но второй терминал по-прежнему будет командной строкой по умолчанию. Это значит, что если нам действительно нравится эта новая командная строка, и мы хотим её сохранить, нам нужно экспортировать её, чтобы при каждом открытии этого или любого другого терминала выводилось приглашение «World's Best Hacker: #».
Изменение нашей переменной пути
Вероятно, самая важная переменная в нашей среде — это переменная PATH. Эта переменная управляет тем, где оболочка ищет вводимые вами команды, такие как cd, ls, echo и т. д. (обычно они находятся в подкаталогах sbin или bin, например, /usr/local/sbin или usr/local/bin). Если оболочка BASH не находит команду ни в одном из каталогов, указанных в нашем пути, она возвращает ошибку «команда не найдена», даже если она существует в другом каталоге, не указанном в нашем пути.
Давайте посмотрим на содержимое нашей переменной PATH, выполнив команду echo-request ее содержимое:
Обратите внимание на каталоги, включённые в нашу переменную PATH. Обычно это каталоги /bin и /sbin, где находятся наши системные команды. Когда мы вводим ls, система понимает, что нужно искать команду ls в каждом из этих каталогов, и когда это происходит, она выполняет её.
Если бы мы скачали и установили новый хакерский инструмент под названием «newhackingtool» в каталог /root/newhackingtool, мы смогли бы использовать его только находясь в этом каталоге. Это означает, что каждый раз, когда мы захотим использовать этот инструмент, нам пришлось бы сначала переходить в /root/newhackingtool. Это, возможно, и неплохо, но немного неудобно. Чтобы использовать этот новый инструмент из ЛЮБОГО каталога, можно просто добавить этот каталог в переменную PATH.
Чтобы добавить этот каталог newhackingtool в нашу переменную PATH, вы можете ввести:
В этой команде вы говорите: «взять переменную PATH (PATH) и присвоить ей (=) значение старой переменной PATH ($PATH) и добавить /root/newhackingtool».
Важно отметить, что мы добавили каталог /root/newhackingtool в переменную PATH. Если вы теперь вернётесь и проверите содержимое переменной PATH, вы увидите, что этот каталог добавлен в конец переменной PATH.
Это означает, что для запуска newhackingtool вам не нужно переходить в каталог /root/newhackingtool. Теперь вы можете запускать приложения newhackingtool из любой точки системы. Оболочка BASH теперь будет искать наш новый инструмент в этом каталоге!
Распространенная ошибка новичков в Linux — назначение нового каталога /root/newhackingtool переменной PATH, например:
kali > PATH=/root/newhackingtool
кали > эхо $PATH
/root/newhackingtool
Теперь ваша команда PATH содержит ТОЛЬКО каталог /root/newhackingtool, а не каталоги системных исполняемых файлов, такие как /bin, /sbin и другие. Это НЕхорошо. В этом случае при попытке выполнить любую системную команду вы, скорее всего, получите ошибку «команда не найдена» (если только вы не находитесь в каталогах системных исполняемых файлов в момент её выполнения, что маловероятно).
кали > cd
bash: cd: команда не найдена
кали >
Помните, что вам нужно добавить значение к переменной PATH, а не заменить его.
Это может быть очень полезным приемом для каталогов, которые мы часто используем, но будьте осторожны и не добавляйте слишком много каталогов в переменную PATH, так как системе придется просматривать каждый каталог в PATH, чтобы найти команды, что может потенциально замедлить работу вашего терминала и вашу работу.
Создание новой пользовательской переменной
Вы можете создавать собственные пользовательские переменные в Linux, просто присваивая значение новой переменной. Синтаксис довольно прост: сначала имя переменной, затем символ присваивания «=» и, наконец, значение переменной, например:
kali > MYNEWVARIABLE = «Хакерство — самый ценный навык в 21 веке»
Теперь, чтобы увидеть значение этой переменной, вы можете использовать команду echo, за которой следует символ $ и имя переменной.
kali > echo $MYNEWVARIABLE
Хакерство — самый ценный навык в 21 веке.
Если вы затем захотите удалить эту новую переменную или любую системную или пользовательскую переменную, вы можете использовать команду unset. При удалении системной переменной следует соблюдать осторожность, так как после этого ваша система, скорее всего, будет работать совершенно иначе.
kali > unset MYNEWVARIABLE
kali > echo $MYNEWVARIABLE
кали >
Когда вы отменили MYNEWVARIABLE, вы её удалили. Теперь при попытке выполнить команду echo для этой же переменной Linux вернёт пустую строку.
Хотя переменные окружения могут показаться немного непонятными, они могут управлять настройками и внешним видом вашей рабочей среды в Linux. Вы можете управлять ими, чтобы адаптировать нашу среду к своим потребностям, изменяя любую из этих переменных и экспортируя их. Кроме того, мы можем создавать новые переменные для управления вашей системой.