880 подписчиков

Профили пользователя в BASH.

В данной статье рассматривается вопросы настройки и использования командной оболочки.

В данной статье рассматривается вопросы настройки и использования командной оболочки.

Вопросы:

  1. Установка переменных во время входа в систему или при запуске оболочки.
  2. Написание bash-сценариев для часто используемых цепочек команд.
  3. Управление структурой каталогов для новых пользователей.
  4. Настройка корректных путей поиска команд.

Командная оболочка в Unix системах называется Shell – это командный интерпретатор, который используется во всех Unix подобных операционных системах. Оболочек огромное количество. Одной из основных оболочек является оболочка BASH или Bourne-again-shell (Еще одна оболочка Борна). Данная оболочка самая распространенная оболочка Unix, которая используется по умолчанию практически во всех дистрибутивах Linux. Все, о чем будет написано далее справедливо для большинства дистрибутивов Linux. Есть небольшой нюанс с Ubuntu.

Есть вот такая картинка по профилям. Значок ~ в данном случае означает домашнюю папку пользователя по умолчанию. Например, /home/john.

В данной статье рассматривается вопросы настройки и использования командной оболочки.-2

Существует папка /etc/profile в ней лежат настройки глобального профиля. Такой профиль, который будет применяться для всех пользователей на данной машине, которые запускают командную оболочку. Функционал у него достаточно большой, но в первую очередь он грузит все что есть в /etc/profile.d и настройки глобального пользователя /etc/bash.bashrc и /etc/bashrc. Получается так, что ищется файл bash.bashrc или bashrc файлы, т.к в разных дистрибутивах разные файлы и грузит то, что он нашел. В документации по Linux написано, если запускается инициализационный скрипт при входе в систему, т.е пользователь заходит в систему, то отрабатывает левая часть картинки, если запускается оболочка вне контекста пользователя, то правая часть.

Если пользователь залогинился в систему, то помимо того, что отрабатывает папка /etc/profile.d начинается проверка в домашнем каталоге пользователя наличие файлов ~/.bash_profile, ~/.bash_login, ~/.profile. В разных дистрибутивах по-разному называется локальный профиль пользователя. В Ubuntu файл ~/.profile просто ссылит на ~/.bashrc, который так же лежит в домашней папке пользователя. Т.е у нас по порядку инициализационный скрипт ищет, как указанно в левой части картинки. Точкой у Ubuntu обозначаются скрытые файлы.

Вот этот файл ~/.bashrc – это настройки конкретного пользователя, настройки оболочки. Файл /etc/bashrc – это настройки глобального пользователя, настройки для всех пользователей.

Суть процесса: оболочка bash используется, как интерактивная оболочка входа в систему. Данная оболочка вызывает команды из файла /etc/profile, если он существует. Далее она по порядку начинает обрабатывать файлы ~/.bash_profile, ~/.bash_login, ~/.profile. И еще есть такой файл в home директории ~/.bash_logout – он отрабатывает при выходе из системы, что следует из его названия.

Есть второй сценарий, использование интерактивной оболочки bash, без входа в систему, то читаются файлы /etc/bash.bashrc и /etc/bashrc.

Мы можем посмотреть, что происходит при запуске оболочки. Для начала найдем файл /etc/profile.

В данной статье рассматривается вопросы настройки и использования командной оболочки.-3

Из картинки мы видим, что данный файл грузит /etc/bash.bashrc, в некоторых дистрибутивах это просто /etc/bashrc. И затем он выполняет из папки /etc/profile.d/*.sh, т.е все скрипты. Об этом можно прочитать в комментарии, всего два действия.

Посмотрим файл cat /etc/bash.bashrc.

В данной статье рассматривается вопросы настройки и использования командной оболочки.-4

Данный файл определяет поведение командной строки, он определяет глобальный профиль пользователей. Все, что в нем указанно справедливо для всех пользователей. Данный файл запускает различные псевдонимы и глобальные функции, различные настройки.

В каталоге /etc, есть папка profile.d, в ней могут находиться различные скрипты и они будут запускаться.

В данной статье рассматривается вопросы настройки и использования командной оболочки.-5

Теперь посмотрим, что у нас в домашней папке, в ней лежат настройки конкретного пользователя, который работает в оболочке. Переходим в домашнюю директорию cd ~, смотрим какие файлы там находятся.

В данной статье рассматривается вопросы настройки и использования командной оболочки.-6

Смотрим очередность запуска файлов и видим, что следующий файл, который запустится, будет ~/.profile. он содержит настройки конкретного пользователя. Посмотрим, что в нем есть cat ~/.profile.

В данной статье рассматривается вопросы настройки и использования командной оболочки.-7

В нем несколько переменных и он ссылит на файл ~/.bashrc. Это особенность Ubuntu. И в файле ~/.bashrc хранятся все настройки.

В данной статье рассматривается вопросы настройки и использования командной оболочки.-8

Он достаточно большой. В нем пишутся настройки истории, как происходит обновление, псевдонимы, цветовые настройки.

Можно посмотреть файл ~/.bash_logout.

В данной статье рассматривается вопросы настройки и использования командной оболочки.-9

В данном файле нет ничего особенного, просто, когда кто-то выходит экран в целях безопасности очищается.

Посмотрим, как создается структура каталогов для новых пользователей. Есть такая папка в /etc/skel/. Если мы туда перейдем и посмотрим, что в ней находиться.

В данной статье рассматривается вопросы настройки и использования командной оболочки.-10

Как вы видите в папке есть несколько файлов. В ней содержится все, то что будет добавляться в домашнюю папку нового пользователя. Если мы хотим пользователю, что-то добавить в его домашнюю папку, мы можем создать в данной папке файл или директорию. И у всех новых пользователей данные папки или файлы будут появляться.

Если у кого появится желание пообщаться или для сотрудничества, мой ТГ канал https://t.me/ITharchevnya

Если у кого есть желание сказать спасибо за канал или статьи :

Сбер : 4274 3200 2419 9740

Paypal: is.sotnikov@gmail.com

QIWI: KNEYE561

Юmoney ( ЯД ) 410016062893453