Описание: Важная часть системного администрования — манипулирование учётными записями. Кандидат BSDA должен быть знаком с различными утилитами для манипулирования учётными записями и уметь использовать их в соответствии с поставленными задачами.
Практика: vipw(8); pw(8),
      adduser(8), adduser.conf(5),
      useradd(8), userdel(8),
      rmuser(8), userinfo(8),
      usermod(8), и user(8)
![]()  | Замечание | 
|---|---|
| Данный текст прислан Дмитрием Орловым, но подвергся моей незначительной редактуре. Е.М. | 
После установки системы требуется перейти к задаче управления локальными пользователями системы. Даже в том случае, если вы единственный пользователь, системы семейства BSD настоятельно рекомендуют завести некоего пользователя и пользоваться привилегированным аккаунтом при помощи команды su(8), что предохранит вас от неожиданного разрушения собственной системы. Существует другая крайность, это создание множества пользователей с административными правами, что может привести как минимум к нестабильности системы, к ее вскрытию злоумышленниками или даже разрушению.
Можно выделить три основных типа учётных записей: суперпользователь, системные пользователи, и учётные записи пользователей. Учётная запись суперпользователя, обычно называемая root, используется для управления системой без ограничения привилегий. Системные пользователи запускают сервисы и, как правило, не могут входить (login) в систему. Учётные записи пользователей необходимы остальным для входа в систему, чтения почты, работы с документами, создания приложений и так далее.
С каждой учётной записью в системе *BSD связана определённая идентификационная информация:
              Имя пользователя в том виде, в каком оно вводится в
              приглашение login:.  Имена пользователей должны быть
              уникальны в пределах одного компьютера; не может быть двух
              пользователей с одинаковым именем пользователя. Существует
              множество правил для создания правильных имён
              пользователей, документированных в
              passwd(5); вы как правило будете
              использовать имена пользователей, состоящие из восьми или
              меньшего количества символов, все символы в нижнем
              регистре.
            
Вообще-то это не является какой-то догмой. Но некоторый софт расчитывает, что на имя пользователя наложены некоторые ограничения. Так, старые реализации системы NIS расчитывали, то имя пользователя состоит не более чем из восьми символов. В настоящий момент вы можете не соблюдать это ограничение. Почтовая система sendmail(8) при доставке почты переводит символы в нижний регистр. Поэтому пользователь в имени которого есть буквы из верхнего регистра будет лишён почты. Многие файловые форматы расчитывают на то, что в имени нет двоеточия и т.п. Если по каким-то причинам вы хотите, чтобы в имени были большие буквы, точки и т.п. Вам надо подумать над архитектурой програмного обеспечения. Например, если вы хотите, чтобы в вашем домене существовали электронные адреса типа Mikhail.Kutuzov@borodino.ru, вам слеует хранить почтовые аккаунты, например, в базе данных PostgreSQL, а не в виде учётных записей UNIX.
login.conf(5),
              passwd(5), см. так же Приложение F, /etc/login.conf(5)).
            /home/username. Пользователи хранят
              личные файлы в домашнем каталоге и в любых подкаталогах,
              создаваемых внутри домашнего каталога.
            Самый простой и интерактивный способ добавить нового пользователя, это использовать команду adduser(8) (нет в NetBSD). Пример использования adduser(8). (Скопировано из OpenBSD FAQ).
#adduser Use option ``-silent'' if you don't want to see all warnings and questions. Reading /etc/shells Reading /etc/login.conf Check /etc/master.passwd Check /etc/group Ok, let's go. Don't worry about mistakes. I will give you the chance later to correct any input.Enter username []:testuserEnter full name []:Test FAQ UserEnter shell csh ksh nologin sh [sh]:kshUid [1002]:EnterLogin group testuser [testuser]:guestLogin group is ``guest''. Invite testuser into other groups: guest no [no]:noLogin class auth-defaults auth-ftp-defaults daemon default staff [default]:<Enter>Enter password []:<Набираете пароль и нажимаете Enter>Enter password again []:<Набираете пароль и нажимаете Enter> Name: testuser Password: **** Fullname: Test FAQ User Uid: 1002 Gid: 31 (guest) Groups: guest Login Class: default HOME: /home/testuser Shell: /bin/kshOK? (y/n) [y]:y Added user ``testuser'' Copy files from /etc/skel to /home/testuserAdd another user? (y/n) [y]:n Goodbye!
        Значения по умолчанию для adduser(8) можно создать в файле
        /etc/adduser.conf
      
# adduser -config_create
        
        Вот пример файла /etc/adduser.conf:
      
# Конфигурационный файл для утилиты adduser(8).
# ЗАМЕЧАНИЕ: only *some* variables are saved.
# Последнее изменение Fri Mar 30 14:04:05 EST 2004.
defaultLgroup=
defaultclass=
defaultgroups=
passwdtype=yes
homeprefix=/home
defaultshell=/bin/csh
udotdir=/usr/share/skel
msgfile=/etc/adduser.msg
disableflag=
upwexpire=91d # Срок годности паролей истекает через 91 день
        
        Скрипт adduser(8) вначале читает
        /etc/group,
        /etc/passwd,
        /etc/shells и другие конфигурационные файлы
        на предмет целостности и инициализации значений по умолчанию, а
        так же получения допустимых значений. Добавляет домашнюю
        директорию и создает пользователя, а так же заносит его в
        требуемые группы.  Интересующиеся тонкостями могут просмотреть
        сам скрипт /usr/sbin/adduser.
      
В OpenBSD и NetBSD в командной строке пользователя можно дабавить при помощи утилиты user(8). Метод достаточно прост и полезен для использования в сценариях. Следует только учитывать, когда заводится пользователь данной командой, то используется УЖЕ шифрованный пароль. Таким образом, для вышеописанного пользователя мы получаем следующую последовательность действий (пример сделан в OpenBSD):
#encrypt -p -b 6Enter string:$2a$06$YOdOZM3.4m6MObBXjeZtBOWArqC2.uRJZXUkOghbieIvSWXVJRzlq#user add -p '$2a$06$YOdOZM3.4m6MObBXjeZtBOWArqC2.uRJZXUkOghbieIvSWXVJRzlq' -u 1002 \ -s /bin/ksh -c "Test FAQ User" -m -g guest testuser
В FreeBSD и DragonFly BSD для этих целей используется утилита pw(8)
        BSD системы поддерживают «классический», древнейший
        способ изменения пользовательской информации —
        vipw(8).Использование этой утилиты весьма
        удобно, так как после рабоиы vipw(8)
        проверяет синтаксис файла и, если администратор не совершил
        никаких ошибок, обновляет данные в файле
        /etc/master.passwd, строит из него
        /etc/passwd и бинарные базы
        /etc/pwd.db и
        /etc/spwd.db. (См. Раздел 2.12.1, «Устройство базы паролей».)
      
        Однако, этот способ следует рекомендовать лишь в том случае,
        если вы понимаете формат файла
        /etc/master.passwd.  Поэтому начинающие и
        ине только начинающие администраторы используют команду
        chpass(1).
      
При запуске chpass(1) запускает редактор vi(1) (см. Раздел 7.3, «Навыки работы в vi(1)») и предлагает изменить следующие настройки учётной записи:
# chpass testuser
Changing user database information for testuser.
Login: testuser
Encrypted password:$2a$06$YOdOZM3.4m6MObBXjeZtBOWArqC2.uRJZXUkOghbieIvSWXVJRzlq
Uid [#]: 1002
Gid [# or name]: 31
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/testuser
Shell: /bin/ksh
Full Name: Test FAQ User
Office Location:
Office Phone:
Home Phone:
        В случе если команда вызвана непривилегированным поьзователем, она позволяет изменить информацию только в рамках полномочий пользователя:
$ chpass
#Changing user information for paakai.
Shell: /usr/local/bin/bash
Full Name: Paakai Sudoer
Office Location:
Office Phone:
Home Phone:
Other information:
        
        После успешного изменения информации о пользователе,
        chpass(8) вызывает
        pwd_mkdb(8) для актуализации изменений в
        базах данных пользователей
        (/etc/master.passwd и
        /etc/passwd).
      
Другие, команды для изменения информации о пользователях: user mod, usermod, pw usermod.
        Быстро и эффективно удалить пользователя можно с помощью команды
        rmuser(8).  rmuser(8)
        старается удалить всё, относящееся к указанному пользователю:
        домашнюю директорию, письма, задачи в
        crontab(1)/at(1),
        уничтожает запущенные процессы этого пользователя, созданные им
        временные файлы в /tmp и, разумеется,
        удаляет его из /etc/master.passwd и
        /etc/group.
      
#rmuserEnter login name for user to remove:testuser Matching password entry: testuser:$2a$06$YOdOZM3.4m6MObBXjeZtBOWArqC2.uRJZXUkOghbieIvSWXVJRzlq:1002 :31::0:0:Test FAQ User:/home/testuser:/bin/kshIs this the entry you wish to remove?yRemove user's home directory (/home/testuser)?y Updating password file, updating databases, done. Updating group file: done. Removing user's home directory (/home/testuser): done.
Для удаления пользователя так же можно вопользоваться командами: userdel, user del, pw userdel.
К сожалению, в UNIX (да и вообще, наверное ни в одной операционной системе) не существует абсолютно надёжного метода удалить пользователя. Никто не может гарантировать вам, что этот пользователь не прикопал своих файлов где-то вне своего домашнего каталога. Что никто не выдал ему прав на ресурсы используя метод ACL. rmuser(8) не в силах удалить связанные с пользователем почтовые алиасы. Если спустя время вы заведёте нового пользователя, то ему может быть выдан UID старого пользователя и он завладеет брошенными файлами. Если имя нового пользователя совпадёт с именем удалённого, то он завладеет почтовыми алиасами и др.
В связи со сказанным, в ряде случаев блокирование пользователей оказывается более желательно, чем удаление их учётных записей.
