Добавление пользователей: useradd
Прежде всего, рассмотрим программу useradd, позволяющую добавить пользователей в систему. Кроме того, вы может воспользоваться этой командой в тех случаях, когда вам необходимо изменить значения, используемые по умолчанию.
Вначале проверим текущее состояние этих настроек:
useradd -D
В результате вы получите, например, следующее:
GROUP=1
HOME=/home
INACTIVE=0
EXPIRE=0
SHELL=
SKEL=/etc/skel
Скорее всего, эти значения вас не вполне удовлетворят, поэтому для облегчения ввода информации о новых пользователях вам потребуется внести в эти переменные некоторые изменения.
Например, введем следующие ограничения:
·
группа, присваиваемая пользователям по умолчанию — 100;
·
пароли обновляются каждые 60 дней;
·
нет нужды блокировать счет до того, как срок действия пароля будет исчерпан;
·
оболочка по умолчанию устанавливается в /bin/bash;
Для внесения этих изменений достаточно одной единственной строки:
useradd -D -g100 -e60 -f0 -s/bin/bash
И теперь после повторного запуска
#useradd -D
GROUP=100
HOME=/home
INACTIVE=0
EXPIRE=60
SHELL=/bin/bash
SKEL=/etc/skel
На всякий случай, если это вам интересно — все эти значения сохраняются в файле: /etc/default/useradd.
Теперь вы можете вводить в систему новых пользователей. Например, добавим пользователя Fred с использованием значений по умолчанию:
useradd -m -c "Fred Flintstone" fred
В результате будет созадана следующая запись в файле паролей /etc/passwd:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash
А в файл /etc/shadow будет помещена следующая строка:
fred:!:0:0:60:0:0:0:0
При этом будет автоматически создан домашний каталог /home/fred и туда будет скопировано содержимое каталога /etc/skel[6].
Но вот что забавно! Счет у Флинтстоуна вроде бы есть, но зарегистрироваться в системе он пока не может. Поэтому нам необходимо установить ему пароль для регистрации в системе. Для этого используем новуюверсию программы passwd.
#passwd fred
Changing password for fred
Enter the new password (minimum of 5 characters)
Please use a combination of upper and lower case letters and numbers.
New Password: *******
Re-enter new password: *******
Теперь запись, соответствующая Фреду в /etc/shadow изменится и приобретет вид:
fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0
Теперь вход в систему для Фреда разрешен!
Настоятельно рекомендуется использовать команды useradd и passwd, а не заниматься непосредственнфм редактированием файлов /etc/passwd и /etc/shadow. Связано это с тем, что эти программы обеспечивают изменение файлов паролей на уровне транзакций, что обеспечивает возможность изменения своих паролей нескольким пользователям одновременно без потери данных.
Если же вам все-таки лень запомнить целых две команды, можете воспользоваться небольшим скриптом, написанным Майком Джексоном[7]:
#!/bin/bash
#
# /sbin/newuser - Скрипт для добавления новых пользователей
# в систему, использующую Shadow Suite
#
# Written my Mike Jackson <mhjack@tscnet.com> as an example for the Linux
# Shadow Password Howto. Permission to use and modify is expressly granted.
#
# Скрипт может модифицироваться с целью создания интерфейса
# подобного программе Adduser из дистрибутива Slackware.
# Кроме того, имеет смысл блокировать ошибки ввода.
#
##
# Умолчания для команды useradd
##
GROUP=100 # Группа по умолчанию
HOME=/home # заголовок домашнего каталога location (/home/username)
SKEL=/etc/skel # Каталог шаблонов
INACTIVE=0 # Количество дней блокировки
# счета после окончания срока действия пароля (0=никогда)
EXPIRE=60 # Days that a passwords lasts
SHELL=/bin/bash # полный путь оболочки пользователя
##
# Умолчания для команды passwd
##
PASSMIN=0 # Минимальное количество дней до смены пароля
PASSWARN=14 # За сколько дней начинается предупреждение?
##
# Убеждаемся, что скрипт запущен пользователем root
##
WHOAMI=`/usr/bin/whoami`
if [ $WHOAMI != "root" ]; then
echo " Новых пользователей может вводить только root!"
exit 1
fi
##
# Запрос регистрационного и полного имен пользователя.
##
echo ""
echo -n "Регистрационноое имя: "
read USERNAME
echo -n "Полное имя пользователя: "
read FULLNAME
#
echo "Добавляю пользователя: $USERNAME."
#
# Обратите внимание на "" вокруг $FULLNAME, которые необходимы из за того,что
# почти всегда полное имя содержит хотя бы один пробел, и без кавычек
# useradd автоматически перейдет к разбору следующего параметра,
# как только достигнет символа пробела..
#
/usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \
-f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME
##
# Установка параметров команды passwd
##
/bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1
##
# Теперь запросим у root-а пароль для этого пользователя
##
/bin/passwd $USERNAME
##
# И, наконец посмотрим, что у нас получилось.
##
echo ""
echo "Запись из файла /etc/passwd:"
echo -n " "
grep "$USERNAME:" /etc/passwd
echo "Запись из файла /etc/shadow:"
echo -n " "
grep "$USERNAME:" /etc/shadow
echo "Результат запроса по команде passwd:"
echo -n " "
passwd -S $USERNAME
echo ""