- Фундаментальные основы Linux. Часть VII. Управление локальными учетными записями пользователей
- Глава 28. Профили пользователей
- Системный профиль
- Обзор сценариев дистрибутива Debian
- Обзор сценариев дистрибутива RHEL5
- Практическое задание: профили пользователей
- Корректная процедура выполнения практического задания: профили пользователей
- Стартовые файлы оболочки Bash
- /etc/profile
- Директория /etc/profile.d
- /etc/profile.d/dircolors.sh
- /etc/profile.d/extrapaths.sh
- /etc/profile.d/readline.sh
- /etc/profile.d/tinker-term.sh
- /etc/profile.d/umask.sh
- /etc/profile.d/X.sh
- /etc/profile.d/xterm-titlebars.sh
- /etc/profile.d/i18n.sh
- Другие значения инициализации
- /etc/bashrc
- /etc/dircolors
- Profile linux ��� ���
- Для чего нужен файл /etc/profile?
- /etc/profile.d
- Для чего нужен файл /etc/bashrc?
- Когда используются эти файлы?
- Интерактивная оболочка и неинтерактивная оболочка: Сравнение
- Интерактивная оболочка
- Неинтерактивная оболочка
- Заключение
Фундаментальные основы Linux. Часть VII. Управление локальными учетными записями пользователей
Глава 28. Профили пользователей
Вошедшие в систему пользователи получают в свое распоряжение множество установленных (и изменяемых) псевдонимов команд, переменных и функций, но откуда они берутся? Командная оболочка использует множество загрузочных файлов сценариев, которые исполняются (или подключаются ) в момент ее вызова. Ниже приводится обзор упомянутых загрузочных сценариев.
Системный профиль
Как командная оболочка bash , так и командная оболочка ksh будет проверять существование файла /etc/profile и подключать его в случае существования.
При чтении данного файла вы можете обнаружить (как в дистрибутиве Debian, так и в дистрибутиве Red Hat Enterprise Linux), что именно его силами создается переменная окружения PATH (помимо других переменных окружения). Данный сценарий также может изменять значение переменной окружения PS1, устанавливать значение переменной окружения HOSTNAME и исполнять дополнительные сценарии, такие, как /etc/inputrc .
Пользователь root может использовать данный сценарий для объявления псевдонимов команд, функций и переменных для каждого из пользователей в системе.
В том случае, если данный файл существует в домашней директории пользователя, командная оболочка bash осуществит его подключение. В дистрибутивах Debian 5/6/7 данного файла по умолчанию не существует.
/.bash_profile , который проверяет существование сценария
/.bashrc и осуществляет его подключение в случае существования. Также он добавляет путь к директории $HOME/bin к списку путей, хранящемуся в переменной окружения $PATH.
Если сценария .bash_profile не существует, командная оболочка bash будет выполнять проверку существования сценария
/.bash_login и его подключение в случае существования.
Данного файла не существует по умолчанию ни в дистрибутиве Debian, ни в дистрибутиве Red Hat.
Если в домашней директории пользователя не существует ни сценария
/.bash_profile , ни сценария
/bash_login , командная оболочка bash будет проверять наличие сценария
/.profile и исполнять его. По умолчанию данного сценария не существует в дистрибутиве Red Hat.
/.bashrc и добавлять путь к директории $HOME/bin в список директорий, хранящийся в переменной окружения $PATH.
По умолчанию данного файла не существует в дистрибутивах RHEL/CentOS.
/.bashrc обычно подключается средствами других сценариев. Давайте рассмотрим задачи, решаемые этим сценарием по умолчанию.
/.bashrc , проверяющий существование сценария /etc/bashrc и подключающий его в случае существования. Также он позволяет объявлять специальные псевдонимы команд и функции.
При завершении работы командная оболочка bash может исполнять сценарий
Обзор сценариев дистрибутива Debian
Ниже приведена таблица для дистрибутива Debian с указанием моментов запуска каждого из описанных стартовых сценариев командной оболочки bash.
Таблица 28.1. Пользовательское окружение дистрибутива Debian
/.bashrc
/.profile
Обзор сценариев дистрибутива RHEL5
Ниже приведена таблица для дистрибутива Red Hat Entrprise Linux 5 с указанием моментов запуска каждого из описанных стартовых сценариев командной оболочки bash.
Таблица 28.2. Пользовательское окружение дистрибутива Red Hat
/.bashrc
/.bash_profile
Практическое задание: профили пользователей
1. Выведите список всех файлов профиля пользователя в вашей системе.
2. Прочитайте содержимое каждого из этих файлов, обычно в них осуществляется подключение дополнительных сценариев.
3. Объявите уникальную переменную, псевдоним команды и функцию в каждом из этих файлов.
4. Воспользуйтесь различными способами получения командной оболочки (su, su -, ssh, tmux, gnome-terminal, Ctrl-Alt-F1, . ) и проверьте, какие из объявленных вами переменных, псевдонимов команд и функций присутствуют в вашем пользовательском окружении.
5. Можете ли вы сходу определить последовательность исполнения обнаруженных стартовых сценариев?
6. Если работа приложения зависит от значения объявленной в файле $HOME/.profile переменной, имеет ли значение существование файла $HOME/.bash_profile или нет?
Корректная процедура выполнения практического задания: профили пользователей
1. Выведите список всех файлов профиля пользователя в вашей системе.
2. Прочитайте содержимое каждого из этих файлов, обычно в них осуществляется подключение дополнительных сценариев.
3. Объявите уникальную переменную, псевдоним команды и функцию в каждом из этих файлов.
4. Воспользуйтесь различными способами получения командной оболочки (su, su -, ssh, tmux, gnome-terminal, Ctrl-Alt-F1, . ) и проверьте, какие из объявленных вами переменных, псевдонимов команд и функций присутствуют в вашем пользовательском окружении.
5. Можете ли вы сходу определить последовательность исполнения обнаруженных стартовых сценариев?
Нет, так как при совпадении имен псевдонимов команд, функций и переменных производится их перезапись.
6. Если работа приложения зависит от значения объявленной в файле $HOME/.profile переменной, имеет ли значение существование файла $HOME/.bash_profile или нет?
Да, имеет. (Обратитесь к странице руководства man bash /INVOCATION)
Источник
Стартовые файлы оболочки Bash
Программа оболочка /bin/bash (в дальнейшем называемая просто «оболочка») использует набор стартовых файлов для помощи создания окружения.Каждый файл имеет специфическое использование. Файлы в директории /etc обычно предоставляют глобальные установки. Если аналогичные файлы присутствуют в вашей домашней директории, то они могут заменить глобальные установки.
Интерактивнвя регистрация оболочки запускается после успешного входа, используя /bin/login, который читает файл /etc/passwd. Эта оболочка во время загрузки читает /etc/profile и его персональный эквивалент
Интерактивнвя нерегистрированная оболочка запускается из командной строки (т.е. [prompt]$ /bin/bash ) или командой /bin/su . Интерактивнвя нерегистрированная оболочка так же запускается вместе с программами терминалов, такими как xterm или konsole в графической среде. Этот тип оболочек копирует основное окружение и затем читает пользовательский файл
/.bashrc для дополнительных инструкций конфигурации.
Неинтерактивная оболочка обычно присутствует при загрузке стартовых скриптов. Она неинтерактивная потому, что она выполняет скрипт и не ожидает ввода от пользователя между выполнением команд. Для такой оболочки используется окружение только из основной оболочки.
/.bash_logout не используется для вызова оболочки. Он читается и выполняется при появлении пользователя после интерактивной регистрации.
К стандартным файлам относится /etc/bashrc, вызываемый из пользовательского
/.bashrc для системной инициализации нерегистрированных оболочек.
Для большей информации смотрите info bash — Ноды: Стартовые файлы Bash и интерактивные оболочки.
/etc/profile
Здесь приведен базовый /etc/profile. Этот файл запускается для установки некоторых помогающих функций и базовых параметров. Он описывает некоторые параметры истории команд bash и в целях безопасности убирает поддержку постоянного файла истории для пользователя roor. Он так же устанавливает вид системного приглашения. Затем он вызывает маленький скрипт в директории /etc/profile.d для предоставления большей инициализации.
Для большей информации по escape-последовательностям, которые вы можете использовать для вашего системного приглашения (т.е. переменной окружения PS1), обратитесь к info bash — Нода: Печать системного приглашения.
Директория /etc/profile.d
Теперь создадим директорию /etc/profile.d, в которой размещены индивидуальные скрипты инициализации.
/etc/profile.d/dircolors.sh
Этот скрипт использует файлы
/.dircolors и /etc/dircolors для управления цветом файлов в листинге директории. Они раскрашивают вывод таких команд, как ls —color . Разъяснение по инициализации этих файлов находится в конце этого раздела.
/etc/profile.d/extrapaths.sh
Этот скрипт добавляет некоторые полезные пути к переменным окружения PATH и PKG_CONFIG_PATH. Если хотите, вы можете раскоментировать последний раздел для размещения точки в конце вашего пути. Это позволит исполняемым файлам в текущей рабочей директории запускаться без указания ./, хотя мы предупреждаем, что обычно это связано с риском для безопасности.
/etc/profile.d/readline.sh
Этот скрипт настраивает файл конфигурации inputrc. Если пользователь не имеет индивидуальных установок, он использует глобальный файл.
/etc/profile.d/tinker-term.sh
Некоторые приложения требуют описания установки TERM для поддержки цвета.
/etc/profile.d/umask.sh
Установка значения umask важна для безопасности. Здесь права доступа для записи группы по умолчанию выключены для пользователей системы и когда имена пользователя и группы не совпадают.
/etc/profile.d/X.sh
Если X установлены, переменные PATH и PKG_CONFIG_PATH так же обновляются.
/etc/profile.d/xterm-titlebars.sh
Этот скрипт показывает пример другого пути установки системного приглашения. Обычная переменная PS1 дополнена PROMPT_COMMAND. Если переменная установлена, значение PROMPT_COMMAND выполняется как команда перед выводом каждого первичного приглашения.
/etc/profile.d/i18n.sh
Этот скрипт показывает установку некоторых переменных окружения, необходимых для поддержки различных языков. Правильная установка этих переменных даст вам:
вывод программ, транслированный на ваш язык
правильную классификацию символов в буквы, цифры и другие классы – это необходимо для Bash для работы в не английских локалях
правильный алфавитный порядок сортировки для для вашей страны
правильный размер бумажной страницы
правильный фомат денег, значения времени и даты
Замените [ll] ниже на двух-буквенный код для требуемого языка (т.е. “ ru ”) и [CC] на на двух-буквенный код страны (т.е. “ RU ”). Так же может быть необходимо указание (и это актуальная и предпочтительная форма) кодировки символов (т.е. “ koi8-r ”) после точки (так, что в результате будет “ ru_RU.koi8-r ”). Используйте следующую команду для большей информации:
Список всех локалей, поддерживаемых Glibc может быть получен запуском следующей команды:
Как только подходящие параметры локали будут определены, создайте файл /etc/profile.d/i18n.sh:
Переменная LC_ALL устанавливает одинаковое значение для всех категорий локализации. Для лучшего контроля вы можете предпочесть установку значений индивидуально для всех категорий, перечисленных в выводе команды locale .
Переменная G_FILENAME_ENCODING говорит таким приложениям, как Glib и GTK + , что имена файлов находятся по умолчанию в кодировке локали, а не в UTF -8, как предполагалось по умолчанию.
Другие значения инициализации
Другие инициализации могут быть легко добавлены в profile добавлением дополнительных скриптов в директорию /etc/profile.d.
/etc/bashrc
Это базовый /etc/bashrc. Коментарии в файле должны все вам объяснить.
/.bash_profile. Если вы хотите, чтобы каждый новый пользователь имел этот файл автоматически, просто измените вывод команды на /etc/skel/.bash_profile и проверьте права доступа после выполнения команды. Затем вы можете скопировать /etc/skel/.bash_profile в домашние директории уже имеющихся пользователей, включаяя root, и установить соответствующего владельца и группу.
/.bashrc. Коментарии и инструкции по использованию /etc/skel для .bash_profile, описанного выше, применимы и здесь но с другим конечным именем файла.
Это пустой файл
/.bash_logout, который может быть использован как временный. Заметьте, что базовый
/.bash_logout не включает команду clear. Это потому, что clear поддерживается в файле /etc/issue.
/etc/dircolors
Если вы хотите использовать возможности dircolors, то выполните следующую команду. Шаги по установке /etc/skel, описанные выше, так же могут быть использованы здесь для предоставления файла
/.dircolors при установке нового пользователя. Как раньше, просто измените имя выходного файла в следующей команде и установите права доступа, владельца и группу у созданных и/или скопированных фалов.
Если вы желаете настроить цвета, используемые для различных типов файлов, вы можете отредактировать файл /etc/dircolors. Инструкции по установке цветов находятся внутри файла.
И напоследок, Ian Macdonald написал превосходную колекцию советов и трюков для расширения окружения вашей оболочки. Вы можете прочитать их на http://www.caliban.org/bash/index.shtml .
Последнее обновление 2005-01-16 09:56:15 -0700
Источник
Profile linux ��� ���
Недавно я столкнулся со следующей проблемой: приложение не сохраняло настройку umask , заданную в профиле root-пользователя, или в файле /etc/profile . Немного разобравшись в вопросе, я понял, что приложение использует только ту настройку umask , которая задана в /etc/bashrc , не принимая даже те значения, которые являются его же собственными сценариями запуска.
Немного изучив вопрос, я понял, какую функцию выполняют эти файлы, чем они различаются и как они выполняются. Такой вопрос поднимается не часто, поэтому я подумал, что будет полезно рассказать о нем вам.
Для чего нужен файл /etc/profile?
Если вы используете Linux, то вам наверняка знакомы файлы .profile или .bash_profile , размещенные в вашем домашнем каталоге. Эти файлы используются для задания элементов окружения для оболочки пользователя. Таких элементов, как, например, umask , и таких переменных, как PS1 или PATH .
Файл /etc/profile не очень-то отличается от этих файлов. Он используется для задания общесистемных переменных окружения в оболочках пользователя. Иногда это те же переменные, что и в .bash_profile , но этот файл используется для задания первоначальных PATH или PS1 для всех пользователей оболочек системы.
/etc/profile.d
Помимо задания элементов окружения, файл /etc/profile выполняет сценарии внутри /etc/profile.d/*.sh . Если вы хотите задать свои собственные переменные окружения для всей системы, вам следует поместить свою конфигурацию в сценарий оболочки в /etc/profile.d .
Для чего нужен файл /etc/bashrc?
Помимо .bash_profile , в своем домашнем каталоге вы также часто будете встречать файл .bashrc . Этот файл предназначен для задания псевдонимов команд и функций, используемых пользователями оболочки bash.
Аналогично тому, как /etc/profile является общесистемной версией .bash_profile , файл /etc/bashrc в Red Hat и файл /etc/bash.bashrc в Ubuntu являются общесистемной версией .bashrc .
Стоит отметить, что в Red Hat реализация /etc/bashrc также выполняет сценариий оболочки в /etc/profile.d , но только если пользовательская оболочка является Интерактивной оболочкой (т.е. Login Shell (стартовой оболочкой))
Когда используются эти файлы?
То, когда выполняется каждый из этих файлов, зависит от типа выполняемого логина. В Linux имеется два типа стартовых оболочек (login shells) — Интерактивные оболочки и Неинтерактивные оболочки. Интерактивная оболочка используется, когда пользователь может взаимодействовать с оболочкой, т.е., например, типичное приглашение командной строки bash. Неинтерактивная оболочка используется, когда пользователь не может взаимодействовать с оболочкой, т.е. выполнение bash-сценариев.
Разница проста: файл /etc/profile выполняется только для интерактивных оболочек, а файл /etc/bashrc – как для интерактивных, так и для неинтерактивных. Вообще-то, в Ubuntu файл /etc/profile вызывает файл /etc/bashrc напрямую.
Интерактивная оболочка и неинтерактивная оболочка: Сравнение
Чтобы на примере сравнить интерактивную и неинтерактивную оболочки, я добавлю переменную в оба файла /etc/profile и /etc/bash.bashrc в своей Ubuntu.
/etc/profile
/etc/bash.bashrc
Интерактивная оболочка
Ниже приведен пример интерактивной оболочки. В этом случае были выполнены оба файла /etc/profile и /etc/bash.bashrc .
Неинтерактивная оболочка
В этом примере мы выполняем команду через оболочку SSH, которая является неинтерактивной; поскольку это неинтерактивная оболочка, выполняется только файл /etc/bash.bashrc .
Заключение
В моем случае приложение не признает значение umask , заданное в файле /etc/profile , но признает значение в файле /etc/bashrc . Это говорит о том, что подпроцесс начинается как неинтерактивная оболочка. Поскольку предлагаемый способ изменения переменных окружения заключается в добавлении сценария оболочки в /etc/profile.d , в моем случае лучше задать значение umask в файле /etc/bashrc .
Источник