··#·· домашнего каталога, копирование конфигурационных данных по умолчанию
··#·· и так далее.
··#·· Для стандартных систем Unix/Linux, не для OS X.
··pwfile="/etc/passwd"
··shadowfile="/etc/shadow"
··gfile="/etc/group"
··hdir="/home"
··if ["$(id −un)"!= "root"]; then
····echo "Error: You must be root to run this command." >&2
····exit 1
··fi
··echo "Add new user account to $(hostname)"
··/bin/echo −n "login: "; read login
··# Следующая строка ограничивает максимальный числовой идентификатор
··#·· пользователя значением 5000, скорректируйте это значение,
··#·· чтобы оно соответствовало верхней границе вашего диапазона
··#·· числовых идентификаторов пользователей.
··uid="$(awk −F: '{ if (big < $3 && $3 < 5000) big=$3 } END { print big + 1 }'\
········ $pwfile)"
··homedir=$hdir/$login
··# Для каждого пользователя создается собственная группа.
··gid=$uid
··/bin/echo −n "full name: "; read fullname
··/bin/echo −n "shell: "; read shell
··echo "Setting up account $login for $fullname…"
··echo ${login}:x:${uid}:${gid}:${fullname}:${homedir}:$shell >> $pwfile
··echo ${login}:*:11647:0:99999:7::: >> $shadowfile
··echo "${login}:x:${gid}:$login" >> $gfile
··mkdir $homedir
··cp −R /etc/skel/.[a-zA-Z]* $homedir
··chmod 755 $homedir
··chown −R ${login}:${login} $homedir
··# Установка начального пароля
··exec passwd $login
Самая замысловатая команда в этом сценарии находится в строке
. Она перебирает записи в файле /etc/passwd , отыскивает наибольший числовой идентификатор, который меньше наибольшего допустимого значения для учетных записей пользователей (в этом сценарии используется число 5000, но вы должны скорректировать его для своей конфигурации), и затем прибавляет 1, чтобы получить числовой идентификатор для новой учетной записи. Это избавляет администратора от необходимости запоминать следующий доступный числовой идентификатор, а также гарантирует высокую степень согласованности информации об учетных записях в процессе развития и изменения коллектива пользователей.
Сценарий добавляет учетную запись с новым числовым идентификатором. Затем создает домашний каталог для нового пользователя и копирует в него содержимое каталога /etc/skel . В соответствии с соглашениями, каталог /etc/skel должен хранить шаблоны файлов .cshrc, login, bashrc и .profile . На сайтах, где имеется веб-сервер, поддерживающий службу ~account, в новый домашний каталог необходимо также скопировать каталог, такой как /etc/skel/public_html . Это особенно удобно, если в вашей организации предусматривается настройка рабочих станций с Linux для инженеров или разработчиков специальными конфигурациями bash.
Этот сценарий не имеет аргументов и должен запускаться с привилегиями root.
В нашей системе уже есть учетная запись для tintin, поэтому мы решили создать отдельную учетную запись для snowy [4] Вам непонятно, о чем это мы? Это персонажи из замечательной серии иллюстрированных комиксов «Adventures of Tintin» (Приключения Тинтина), созданной бельгийским художником Эрже (Hergé) и вышедшей в середине XX века. Подробности смотрите на сайте: http://www.tintin.com/ ( https://ru.wikipedia.org/wiki/Приключения_Тинтина — Примеч. пер. ).
(как показано в листинге 5.15).
Листинг 5.15.Тестирование сценария adduser
$ sudo adduser
Add new user account to aurora
login: snowy
full name: Snowy the Dog
shell: /bin/bash
Setting up account snowy for Snowy the Dog…
Changing password for user snowy.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Усовершенствование сценария
Одним из значительных преимуществ использования собственного сценария adduser является возможность расширять его и изменять логику отдельных операций, не заботясь об обновлении системы под эти изменения. В числе вероятных расширений автоматическая отправка приветственного электронного письма, в общих чертах обрисовывающего порядок работы и способы получения справочной информации, автоматическая печать на бумаге сводной информации об учетной записи для передачи пользователю, добавление псевдонима firstname_lastname или firstname.lastname в файл aliases сервера электронной почты и даже копирование комплекта файлов в домашний каталог учетной записи, чтобы пользователь мог немедленно включиться в коллективную работу над проектом.
Читать дальше