- Настройки для добавления пользователей
- Linux.yaroslavl.ru
- The /etc/skel Directory
- Future is here!
- Future is here!
- /etc/skel directory in Linux
- Основы Linux от основателя Gentoo. Часть 3 (4/4): Настройка пользовательского окружения
- Настройка пользовательского окружения
- Знакомство с «fortune»
- .bash_profile
- Оболочка входа.
- Понимание —login
- Проверка на интерактивность
- /etc/profile и /etc/skel
- export
- Экспортирование переменных
- Export и set -x
- Установка переменных с «set»
- Unset vs. FOO=
- Экспортирование переменных для изменения поведения программ.
- Использование «env»
- Итоги и ссылки
- Итоги
- Ссылки
- Об авторах
- Daniel Robbins
- Chris Houser
Настройки для добавления пользователей
Вместе команда /usr/sbin/useradd и директория /etc/skel предоставляют способ гарантированного добавления пользователей в систему LFS с одинаковыми начальными установками для таких параметров, как PATH, обработка клавиатуры и переменные окружения.
Директория /etc/skel содержит копии различных установочных и других файлов, которые могут быть скопированы в новые домашние директории пользователей, когда программа /usr/sbin/useradd добавляет пользователя user.
Программа useradd использует набор значений по умолчанию, находящихся в /etc/default/useradd, если он присутствует. Если файла нет, тогда используются внутренние значения. Вы можете просмотреть значения по умолчанию, запустив /usr/sbin/useradd -D .
Для изменения этих значений на новые, создайте базовый файл /etc/default/useradd с теми же значениями, что выводятся командой /usr/sbin/useradd -D . Вот пример.
В файле отсутствует только оболочка по умолчанию. Добавьте это запуском:
Это установит строку SHELL= в SHELL=/bin/bash.
Useradd имеет много параметров, которые могут быть установлены в файле /etc/default/useradd.
Для большей информации смотрите man useradd .
Для начала создайте директорию /etc/skel и убедитесь, что она доступна для записи только системному администратору, обычно root. Создание директории под root это лучший способ.
У любого файла из этой части книги, который вы разместите в /etc/skel, запись должна быть разрешена только владельцу, а так же они должны быть нечитаемыми для «группы» и «других».
Вы можете разместить и другие файлы в /etc/skel с другими правами доступа.
Решите, какие файлы инициализации должны быть предоставлены для всех (или большинства) новых домашних директорий пользователей. Решение, которое вы сделаете, будет влиять на ваши действия в двух следующих разделах Стартовые файлы оболочки Bash и Файлы /etc/vimrc и
/.vimrc. Некоторые их этих файлов будут полезны для root, другие для остальных и новых пользователей.
Файлы из этих разделов, которые вы можете захотеть разместить в /etc/skel, включают .inputrc, .bash_profile, .bashrc, .bash_logout, .dircolors, и .vimrc. Если вы не уверены, какой из них должен быть размещен здесь, просто продолжайте до следующих разделов, читая каждый раздел и другие предлагаемые ссылки, а затем сделайте ваш выбор.
Вы можете запустить слегка измененные установки команд для файлов, размещенных в /etc/skel. Каждый раздел будет напоминать вам об этом. Короче, команды в книге были написаны для файлов, которые не добавлены в /etc/skel, а только посылают результаты в домашние директории пользователей. Если файл должен быть в /etc/skel, измените команды книги для посылки вывода сюда, а затем просто скопируйте файл из /etc/skel в подходящие директории, например /etc,
или домашнюю директорию любого пользователя, имеющегося в системе.
При добавлении нового пользователя командой useradd используйте параметр -m, который говорит useradd создать домашнюю директорию пользователя и скопировать в нее файлы из /etc/skel. Например:
Последнее обновление 2005-01-14 17:30:04 -0700
Источник
Linux.yaroslavl.ru
Ядро Linux работает с идентификаторами, присвоенными пользователям. Каждый пользователь имеет личный числовой идентификатор user id или uid , потому что обрабатывать числа для компьютера проще, чем строковые имена пользователей. Отдельная база данных, вынесенная за пределы ядра, связывает текстовое имя пользователя username (аккаунт) , с соответствующими user id. База данных хранит также немало полезной информации о каждом пользователе.
Для создания пользователя надо добавить сведения о нем в базу данных пользователей и создать домашний каталог для него. Также возможна установка начальных файлов настроек.
Большинство дистрибутивов Linux имеют программу для создания пользователей. Хуже то, что такие программы везде разные. Есть две наиболее распространенные команды: adduser и useradd ; возможно применение графического интерфейса. Пользователя можно добавить и в ручном режиме.
База данных о пользователях в Unix системах является текстовым файлом /etc/passwd (называется файл паролей (password file) ), который хранит все имена пользователей и сведения о них. Каждому имени пользователя (логину) соответствует одна строка из семи полей, разделенных двоеточиями:
Имя пользователя в системе (его аккаунт).
Пароль (в зашифрованном виде).
Числовой user id.
Числовой group id.
Полное имя и другие сведения о пользователе.
Login shell (программа, запускаемая при входе в систему).
Формат полей детально описан в man-руководстве на passwd .
Каждый пользователь может читать файл паролей, например для поиска имени другого пользователя. К тому же, такая возможность позволяет разлиным командам показывать имена полльзователей вместо их числовых мдентификаторов. Увы, зашифрованные пароли также доступны на чтение всем. Конечно, они зашифрованы, но теоретически (да и практически, судя по опыту переводчика) это не проблема.
Многие Linux-системы применяют теневые пароли (shadow passwords) . Это альтернативный путь хранения паролей: они пишутся в отдельный файл. /etc/shadow , который доступен уже только для root. Файл /etc/passwd вместо пароля будет во втором поле каждой строки хранить только специальный маркер. Любая программа, которой надо проверять пароли, выполняется с setuid от имени root и может обращаться к затененному файлу паролей. Нормальные программы, которым нужны только другие поля из файла паролей, не смогут получить пароли.
На большинстве систем не имеет значения, что числовые значения идентификаторов пользователя и группы, но если Вы используете сетевую файловую систему (Network filesystem, NFS), Вы должны иметь одни и те же uid и gid на всех системах. Это потому, что NFS также идентифицирует пользователей по числовым uid. Если Вы не используете NFS, Вы можете позволить вашему инструменту создания пользоваьелей выбирать их автоматически.
Если Вы используете NFS, вы должны изобрести механизм для синхронизирования информации о пользователях и группах. Одним из вариантов является система NIS.
Вы должны избегать многократно использовать числовой uid (и текстовое имя пользователя), потому что новый владелец uid (или имени пользователя) может получить доступ к файлам старого владельца (почте, например).
Когда создается домашний каталог для нового пользователя, он инициализируется файлами из каталога /etc/skel . Администратор системы может создавать файлы в /etc/skel , которые будут обеспечивать хорошую заданную по умолчанию среду для пользователей. Например, он мог бы создавать конфигурацию /etc/skel/.profile , которая устанавливает системную переменную EDITOR равной некоторому редактору, который является дружественным к новым пользователям.
Однако, обычно самое лучшее пробовать хранить в /etc/skel как можно меньше, так как будет почти невозможно модифицировать файлы существующих пользователей. Например, если имя дружественного редактора измененится, все существующие пользователи должны будут отредактировать свои .profile . Администратор системы мог бы попробовать сделать это автоматически с применением какого-либо скрипта, но это равнозначно попытке разрушить чей-то файл.
Всякий раз, когда возможно, лучше поместить глобальную конфигурацию в глобальные файлы, типа /etc/profile . Этим путем можно модифицировать все без того, чтобы разрушить собственные установки пользователей.
Чтобы создавать нового пользователя вручную, выполните следующее:
Отредактируйте файл паролей /etc/passwd редактором vipw и добавьте строку для нового пользователя. Будьте внимательным с синтаксисом. Не редактируйте каким попало редактором! vipw блокирует файл, так, чтобы другие команды не пробовали модифицировать его в то же самое время. Вы должны записать в поле пароля ` * ‘ так, чтобы было невозможно войти.
Точно так же редактируйте /etc/group редактором vigr , если надо создать новую группу
Создайте основной каталог пользователя командой mkdir .
Скопируйте файлы из /etc/skel в домашний каталог нового пользователя.
Смените владельца и права доступа для свежесозданных файлов и каталогов командами chown и chmod . Опция -R весьма полезна. Правильные разрешения немного разные для разных систем, но обычно следующие команды делают то, что надо:
Установите пароль командой passwd .
После того, как Вы устанавливаете пароль в последнем шаге, пользователь сможет работать. Вы не должны устанавливать пароль, пока все остальное не сделано, иначе пользователь может неосторожно войти, в то время как вы еще копируете файлы.
Иногда необходимо создать псевдопользователя. Такой пользователь никогда не используется как обычный. Например, чтобы установить анонимный сервер FTP станция (так, чтобы любой мог сгружать и загружать файлы без необходимости иметь логин в системе), Вы должны создать пользователя ftp. В таких случаях, пароль задавать не надо. Значит, файл пароля имеет всю информацию относительно пользователя за исключением его пароля.
Источник
The /etc/skel Directory
The /etc/skel directory contains files and directories that are automatically copied over to a new user’s home directory when such user is created by the useradd program.
A home directory, also called a login directory, is the directory on Unix-like operating systems that serves as the repository for a user’s personal files, directories and programs, including personal configuration files. It is also the directory that a user is first in after logging into the system. The /etc directory and its subdirectories contain the many important configuration files for the system.
The useradd program is located in the /usr/sbin/ directory, and on most systems it is accessible only by the root (i.e., administrative) user. On some systems this program might be called adduser.
/etc/skel allows a system administrator to create a default home directory for all new users on a computer or network and thus to make certain that all users begin with the same settings or environment.
Several user configuration files are placed in /etc/skel by default when the operating system is installed. Typically they might include .bash_profile, .bashrc, .bash_logout, dircolors, .inputrc and .vimrc. The dots preceding the names of these files indicate that they are hidden files, i.e., files that are not normally visible in order to avoid visual clutter and help reduce the chances of accidental damage.
The contents of /etc/skel can be viewed by using the ls (i.e., list) command with its -a option (which shows all files and directories, including hidden ones), i.e.,
The location of /etc/skel can be changed by editing the line that begins with SKEL= in the configuration file /etc/default/useradd. By default this line says SKEL=/etc/skel.
It is usually better to keep /etc/skel as small as possible and put system-wide configuration items into global configuration files such as /etc/profile. This is because the latter makes it much easier to update existing users’ files because its settings take effect as soon as the system is turned on and apply to new users and old uses alike.
When a user is removed from the system by an administrator with the userdel command, that user’s home directory, including the files and directories that have been copied into it from /etc/skel, remains intact.
The name of the directory skel is derived from the word skeleton, because the files it contains form the basic structure for users’ home directories.
Created June 25, 2005.
Copyright © 2005 The Linux Information Project. All Rights Reserved.
Источник
Future is here!
Future is here!
/etc/skel directory in Linux
In this article, we would discuss /etc/skel directory in Linux distributions. The /etc/skel/ contains all the files and directories which are automatically copied to the newly created user’s home directory.
In an organization, a System Administrator has to manage large pool of users. It wouldn’t be feasible for the System Administrator to make similar changes for each user who joins the organization. For example, If the System Administrator wants to provide a specific file to all the newly created users. Then, he/she has to copy that file for each user. Or, the System Administrator may copy the file in the /etc/skel/ directory. And, it copies the file on its own whenever System Administrator creates a new user. Thus, the System Administrator can save himself/herself valuable chunks of time.
/etc/skel directory in Linux
To know the contents of your system’s /etc/skel/ directory run the following command in terminal –
-a option – to list hidden files in the directory, and
-l is for long list format.
The output would correspond with –
As visible from the output, the root has the ownership of all files and directories in /etc/skel/ directory. When adding a user through useradd command, we don’t have to worry about ownership of contents as appropriate permissions are automatically set.
Although not advisable, if we wish to change the default /etc/skel/ directory then we can do so by editing the /etc/default/useradd file. Open the file as superuser and move to the entry that mentions SKEL=/etc/skel. Thereafter, we have to enter the directory’s address of our choice in place of /etc/skel/. There are few other changes we can make by editing /etc/default/useradd file. But, we should avoid it unless absolutely required.
In conclusion, /etc/skel/ directory in Linux- is a skeleton directory which contains the default files that would automatically get copied to newly created users’ HOME directory.
Источник
Основы Linux от основателя Gentoo. Часть 3 (4/4): Настройка пользовательского окружения
Навигация по основам Linux от основателя Gentoo:
Часть I:
Часть II:
Часть III
Настройка пользовательского окружения
Знакомство с «fortune»
У вашего окружения есть много полезных опций, которые вы можете изменить по своему усмотрению. Однако до сих пор мы не обсуждали как восстанавливать эти настройки каждый раз, когда вы входите в систему, исключая то, чтобы каждый раз набирать их заново. В этом разделе мы рассмотрим настройку вашего окружения посредством редактирования стартовых конфигурационных файлов.
Для начала, давайте покажем дружелюбное сообщение когда вы будете входить в систему. Чтобы увидеть пример такого сообщения, запустите fortune:
$ fortune
No amount of careful planning will ever replace dumb luck.
(приложение fortune может быть не установлено, запустите установку в пакетном менеджере вашего дистрибутива, например apt-get install fortune — прим. пер.)
.bash_profile
Теперь давайте сделаем так чтобы fortune запускалось при каждой авторизации. Используя любимый текстовый редактор отредактируйте файл .bash_profile в вашей домашней директории. Если такого файла не существует, создайте его. Вставьте в его начало:
fortune
Попробуйте выйти из системы и зайдите обратно. До запуска менеджера дисплея, такого как например xdm, gdm или kdm, вы увидите веселое приветствие, когда войдете:
mycroft.flatmonk.org login: chouser
Password:
Freedom from incrustations of grime is contiguous to rectitude.
$
Оболочка входа.
При запуске bash проходит файл .bash_profile в вашей домашней директории, запуская каждую строчку как будто набирая ее в командной строке. Это называется интерпретацией файла (file sourcing).
Bash может работать различным образом в зависимости от того, как он запущен. Если он запущен как оболочка входа, то будет работать, как описано выше — сначала обработая общесистемный /etc/profile, а затем ваш личный
Существуют два способа запуска bash в качестве оболочки входа. Первый используется когда вы впервые входите в систему: bash запускается с именем процесса -bash. Можно увидеть это в выводе списка процессов:
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
chouser 404 0.0 0.0 2508 156 tty2 S 2001 0:00 -bash
Вы, вероятно, увидите более длинный список, но но в нем будет как минимум одна строка с чертой перед именем вашей оболочки, как -bash в примере выше. Эта черта используется оболочкой, чтобы определить, была ли она запущена при авторизации.
Понимание —login
Второй способ запустить bash как оболочку входа — при помощи опции —login. Время от времени эта возможность используется эмуляторами терминала (вроде xterm) чтобы их сессия bash выглядела как при изначальном входе в системе.
После авторизации можно запустить много копий вашей оболочки. У тех из них которые запущены без опции —login или не имеют черточки перед именем процесса, поведение будет иным нежели при запуске с авторизацией. Они предоставляют вам командную строку, однако, называются они интерактивными оболочками. Если bash запущена интерактивно, без авторизации, она проигнорирует /etc/profile и
/.bash_profile вместо этого обработает
Проверка на интерактивность
/.bashrc не будучи запущенным интерактивно, например при использовании команд типа rsh или scp. Это важно помнить потому как вывод текста, как в примере с командой fortune выше, может испортить эти неинтерактивные сессии bash. Хорошей идеей является использование переменной PS1 для проверки факта интерактивности текущей сессии перед выводом текста:
/etc/profile и /etc/skel
Как системный администратор, вы отвечаете за файл /etc/profile. Так как им руководствуются все кто впервые входят в систему, важно держать его в рабочем состоянии. Это также очень мощный инструмент, используемый для того чтобы заставить вещи работать правильно для новых пользователей сразу после того как они войдут используя свою новую учетную запись.
Однако, существует вариант, при котором, настройки с одной стороны, могут быть выставлены в значения по-умолчанию для новых пользователей, а с другой, могут быть легко ими изменены при необходимости. Как раз для этого и существует директория /etc/skel. При использовании команды useradd для создания новой учетной записи, все файлы из /etc/skel копируются в домашний каталог нового пользователя. Это означает, что вы можете положить, например, .bash_profile и .bashrc в /etc/skel для более комфортного начала работы нового пользователя.
export
Переменные в bash могут быть помечены таким образом, что они будут устанавливаться во всех вновь запускаемых командных оболочках. Это означает, что они обозначены как внешние (export). Вы можете заставить bash отобразить список всех таким образом обозначенных внешних переменных в вашей сессии bash:
$ export
declare -x EDITOR=»vim»
declare -x HOME=»/home/chouser»
declare -x MAIL=»/var/spool/mail/chouser»
declare -x PAGER=»/usr/bin/less»
declare -x PATH=»/bin:/usr/bin:/usr/local/bin:/home/chouser/bin»
declare -x PWD=»/home/chouser»
declare -x TERM=»xterm»
declare -x USER=»chouser»
Экспортирование переменных
Если переменная не отмечена на экспорт, её значение не будет задано для новых запускаемых оболочек. Но вы можете отметить переменную на экспорт, передав её встроенной команде export:
$ FOO=foo
$ BAR=bar
$ export BAR
$ echo $FOO $BAR
foo bar
$ bash
$ echo $FOO $BAR
bar
В этом примере были заданы обе переменные FOO и BAR, но только BAR была помечена для экспорта. Когда был запущен новый bash он потерял значение переменной FOO. Если вы выйдите из этого нового bash, вы увидите что первоначальные значения обоих переменных FOO и BAR не изменились.
Export и set -x
/.bash_profile или /etc/profile и помечены для экспорта, для того, чтобы в дальнейшем не было необходимости указывать их снова. Но есть несколько опций которые не могут быть экспортированы, и поэтому они должны быть заданы в
/.bashrc и в вашем профиле последовательно. Эти опции настраиваются при помощи встроенной команды set:
$ set -x
Опция -x заставляет bash вывести на экран каждую команду, которую он собирается выполнить:
$ echo $FOO
$ echo foo
foo
Это может быть очень полезно для понимания непредвиденного поведения команд при использовании кавычек или похожих странностей. Чтобы выключить опцию -x, используйте set +x. Обратитесь к странице документации man за всеми опциями встроенной команды set.
Установка переменных с «set»
Команда set может также использоваться для задания значений переменных, но при этом указание самой этой команды не является обязательным. Команда в bash «set FOO=foo» делает то же самое, что и «FOO=foo». Сброс значения переменной осуществляется встроенной unset:
Unset vs. FOO=
Это не то же самое, что установка переменной пустым значением, хотя порой это сложно объяснить. Один из способов эту разницу заметить — вызвать команду set без параметров, чтобы вывести список всех текущих переменных:
$ FOO=bar
$ set | grep ^FOO
FOO=bar
$ FOO=
$ set | grep ^FOO
FOO=
$ unset FOO
$ set | grep ^FOO
Использование set без параметров похоже на использование встроенной команды export за исключением того, что set отображает все переменные, а не только обозначенные как внешние.
Экспортирование переменных для изменения поведения программ.
Часто поведение команд можно изменить установкой переменных окружения. Так же, как в случае новых сессий bash, запускаемые программы из вашей командной строки будут видеть только переменные окружения, помеченные на экспорт. Например, команда man проверяет переменную PAGER, чтобы выяснить какую программу использовать для постраничного просмотра текста.
$ PAGER=less
$ export PAGER
$ man man
Когда переменная PAGER установлена в less, вы будете видеть сначала одну страницу, а нажатие пробела будет перемещать вас а следующую страницу. Если вы измените переменную PAGER в cat, то весь текст отобразится сразу, без остановок на страницах.
Использование «env»
К сожалению, если вы позабудете установить PAGER обратно в less, программа man (как и некоторые другие программы) будет продолжать вывод весь запрошенный текст без остановок. Если вы хотели задать PAGER значение cat только на один раз, то могли бы воспользоваться командой env:
$ PAGER=less
$ env PAGER=cat man man
$ echo $PAGER
less
В этом примере переменная PAGER была использована со значением cat в программе man, но сама по себе переменная окружения PAGER осталась неизменной в сессии bash.
Итоги и ссылки
Итоги
Ну вот самое время поздравить вас с завершением 3-ей части руководства. Вы уже должны знать как находить информацию в системе и интернет документации, а так же иметь хорошее представление о модели прав доступа в Linux, управлении учетными записями пользователей и окружением.
Ссылки
Не забудьте посмотреть ресурсы c Linux документацией, использованные в этом руководстве, в особенности Linux Documentation Project, где сможете найти различные гайды, FAQ, а так же бесценные страницы мана. Не забудьте также о Linux Weekly News.
The Linux System Administrators guide является хорошим дополнением к этому руководству. Также вы можете найти в интернете весьма полезную статью Эрика Рэймонда «Unix and Internet Fundamentals HOWTO».
Дэниел Роббинс, на примере серии статей, «Bash в примерах», показывает как использовать конструкции программирования для написания собственных скриптов. Эта серия (особенно части 1 и 2) является замечательной подготовкой для экзамена LPIC 1-го уровня, к тому же поможет закрепить усвоенные понятия охватываемые руководством «Настройка пользовательского окружения» разделы:
- Bash by example, Part 1: Fundamental programming in the Bourne-again shell (перевод планируется)
- Bash by example, Part 2: More bash programming fundamentals (перевод планируется)
- Bash by example, Part 3: Exploring the ebuild system. (перевод планируется)
Если вы не знакомы с текстовым редактором Vi прочтите вступление Дэниела в руководстве «Vi intro — the cheat sheet method tutorial». Оно позволит вам легко и в тоже время быстро освоить всю мощь Vi. Считайте, что этот материал обязателен для прочтения если вы не знаете как пользоваться Vi.
Для знакомства с редактором Emacs, смотрите руководство «the developerWorks», «Living in Emacs».
Перевод выполнил коллективный разум с помощью notabenoid.com. Спасибо следующим benoid-юзерам (в алфавитном порядке): kindacute, nekjine, Rich. Отдельная благодарность Алексею Блажко (blazhkoa@gmail.com), а также инициатору всей серии переводов, VBart.
Об авторах
Daniel Robbins 
Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.
Chris Houser
Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.
Источник