Управление пользователями в FreeBSD

| |

Как и в любой другой Unix-подобной операционной системе, в FreeBSD учетные записи пользователей могут обеспечивать интерактивный доступ к системе. При разумном подходе к управлению пользователями учетные записи создают дополнительный слой безопасности системы, предоставляя возможность ограничивать пользователей только файлами и каталогами, необходимыми им для работы.

Данное руководство посвящено управлению пользователями в системе FreeBSD; оно охватывает следующие темы:

  • Как добавить пользователя;
  • Как передать права суперпользователя;
  • Удаление пользователя;
  • Блокировка и разблокировка учетной записи.

Требования

Для выполнения руководства нужно иметь root-доступ к серверу FreeBSD или расширенные привилегии sudo.

Создание пользователя

Для создания пользователя проще всего использовать утилиту adduser, которая основана на команде pw. Команда adduser добавляет пользователя в систему, выполняя все необходимые действия в файлах passwd, master.passwd и group, и создает новый домашний каталог. Команду можно запустить в интерактивном режиме (т.е., с запросами информации о новом пользователе) или в нон-интерактивном режиме (что удобнее при создании группы пользователей). В данном руководстве рассматривается использование команды в интерактивном режиме.

Чтобы использовать adduser в интерактивном режиме, что позволяет создавать одного пользователя за один раз, просто запустите команду без аргументов:

На данном этапе нужно будет предоставить информацию о новом пользователе, ответив на серию вопросов. Эти вопросы выглядят так (условные ответы на них выделены красным):

Username: finn
Full name: Finn Human
Uid (Leave empty for default):
Login group :
Login group is finn. Invite finn into other groups? : wheel
Login class :
Shell (sh csh tcsh nologin) :
Home directory :
Home directory permissions (Leave empty for default):
Use password-based authentication? :
Use an empty password? (yes/no) :
Use a random password? (yes/no) :
Enter password: password
Enter password again: password
Lock out the account after creation? :

Многие поля можно оставить незаполненными, это установит значения по умолчанию (как, например, в вышеприведенном коде); однако есть и пара важных строк:

  • Username: введите имя нового пользователя.
  • Login group is . Invite into other groups?: это поле позволяет добавить пользователя в другие группы, указав названия групп через пробел. Обычно это используется для предоставления новому пользователю привилегий sudo путем добавления его в группу wheel. В FreeBSD пользователи группы wheel могут запускать команды с привилегиями суперпользователя. Чтобы оставить пользователю его стандартные права, не заполняйте это поле.

Все остальные поля довольно очевидны; везде, кроме поля для паролей, можно оставить значения по умолчанию. Более подробное описание всех полей можно получить при помощи команды man adduser.

После заполнения полей на экране появится основная информация о новом пользователе.

Username: finn
Password: *****
Full Name: Finn Human
Uid: 1002
Class:
Groups: finn wheel
Home: /home/finn
Home Mode:
Shell: /bin/sh
Locked: no
OK? (yes/no): yes

Просмотрите информацию о пользователе и, если все верно, ответьте yes в поле «OK?», после чего пользователь будет добавлен в систему, а на экране появится подтверждение:

adduser: INFO: Successfully added (finn) to the user database.

Затем команда спросит, нужно ли создать еще одного пользователя:

Add another user? (yes/no): no
Goodbye!

Если больше не нужно создавать пользователей, выберите no. В противном случае введите yes и повторите весь вышеописанный процесс

Как передать привилегии Sudo

В FreeBSD, как и в других Unix-подобных ОС, пользователи, имеющие доступ к команде sudo, могут запускать команды с привилегиями суперпользователя. То есть, команда sudo расширяет привилегии обычного пользователя до привилегий пользователя root.

В FreeBSD такими привилегиями обладают все пользователи, входящие в группу wheel; причиной такого поведения является следующая строка в файле sudoers (/usr/local/etc/sudoers):

%wheel ALL=(ALL) NOPASSWD: ALL

То есть, чтобы пользователь получил расширенные привилегии, нужно добавить его в группу wheel; для этого используйте команду pw groupmod (не забудьте указать имя своего пользователя):

sudo pw groupmod wheel -m finn

Эта команда добавит указанного пользователя в группу wheel в файле /etc/group, и таким образом пользователь сможет выполнять команды как суперпользователь.

Удаление пользователей

Для удаления пользователя из системы FreeBSD используется команда rmuser. Ее можно запустить без аргументов или же сразу задать имя пользователя, которого нужно удалить:

Если имя пользователя, которого нужно удалить, не было задано в качестве аргумента, команда попросит указать имя, затем подтвердить запуск команды и удаление домашнего каталога пользователя.

Please enter one or more usernames: finn
Matching password entry:
finn:*:1002:1002::0:0:Finn Human:/home/finn:/bin/sh
Is this the entry you wish to remove? y
Remove user"s home directory (/home/finn)? y
Removing user (finn): mailspool home passwd.

Блокировка пользователей

Чтобы отключить пользователя в системе, но не удалять его учетную запись и домашний каталог, можно просто заблокировать его. Для этого используется команда pw lock + имя пользователя в качестве аргумента:

sudo pw lock username

Данная команда добавляет префикс *LOCKED* перед записью пользователя в файле /etc/master.passwd. Такие пользователи не могут войти в систему до тех пор, пока не будут разблокированы.

Разблокировка пользователей

Чтобы разблокировать пользователя, используйте команду pw unlock:

sudo pw unlock username

Эта команда удаляет префикс *LOCKED* перед записью пользователя в файле /etc/master.passwd.

Заключение

Как видите, управление пользователями – довольно простая рутинная задача любого администратора сервера FreeBSD.

Tags: ,

Модель полномочий и пользователей, используемая в операционной системе FreeBSD и большинстве систем семейства UNIX достаточно простая и одноуровневая. Не то, что Windows со своими вложенными одна в другую группами:-).

В FreeBSD существует только два типа пользователей: обычные пользователи и суперпользователь root. Ну и соответственно плоское пространство групп.

На первый взгляд может показаться, что эта схема менее практична, чем схема Windows. Но всё-таки у любой из схем есть свои плюсы и минусы. Сложная иерархическая система групп, пользователей и полномочий Windows позволяет более гибко настроить политику доступа, но также увеличивает вероятность того, что что-то может пойти не так. Да и велика вероятность допустить ошибку, степень которой может варьироваться в широких пределах. Ладно б там, начальник не получил доступ к своей папке. А если все получили доступ к закрытым документам?

Каждый обычный пользователь системы FreeBSD обладает ограниченными полномочиями и имеет закреплённое за собой место хранения файлов (домашняя директория). Когда мы подключаемся к компьютеру удалённо, то являемся там, как правило, рядовым пользователем. Мы сразу попадаем в свой домашний каталог, в котором можем изменять файлы. И то только потому, что являемся их владельцем.

Для того, чтобы олицетворить себя суперпользователем, используем команду su. Потребуется ввести пароль суперпользователя, который является “ключом от всех дверей” нашей системы. После получения доступа на уровне суперпользователя мы получим такие возможности для создания или удаления файлов на компьютере, какие не сможем получить ни на одной системе под управлением Windows.

Важно помнить, что работая в системе под root нужно соблюдать повышенные меры безопасности. Система не будет сомневаться в компетентности root-а, если он сказал – удалить важные каталоги, значит так нужно.

Для того, чтобы выполнить команду su, нужно быть членом группы, называемой “wheel”. В эту группу входят те пользователи, которым полномочно становиться суперпользователями.

“Кто все эти люди?”

Есть ещё одна особенность. Наряду с регистрирующимися пользователями (люди, которые подключаются к системе), существуют и автоматические пользователи (bin, daemon, nobody, operator, www и прочие). Эти учётные записи существуют, чтобы владеть некоторыми системными процессами. Важно понимать тут, что каждый процесс, как и файл, должен принадлежать некоторому пользователю и все процессы ограничены полномочиями тех пользователей, которым они принадлежат.

Пользователи никогда не обращаются к своим файлам напрямую. Все, что делает пользователь со своими файлами с помощью команд – на самом деле выполняет процесс, от имени пользователя. Процессы оперируют файлами или другими процессами. Процессы, принадлежащие пользователю ivan могут работать только с файлами и процессами, которые принадлежат пользователю ivan. В доступе может быть отказано, если один из этих процессов попытается изменить файл или процесс пользователя andrey.

Для чего же нужны псевдопользователи? Представим, что пользователь ivan стал вдруг суперпользователем. Все процессы, выполняемые от имени ivan станут обладать абсолютной властью по отношению к процессам другого пользователя. А что, если один из таких процессов читает особый конфигурационный файл и изменяет параметры системы? А что, если по причине какой-либо ошибки любой может получить доступ к конфигурационному файлу или иным способом передать потенциально небезопасные параметры в программу, выполняющуюся с абсолютными правами? Система может быть уничтожена. Без вопросов и лишних предупреждений. Поэтому каждый сервис должен быть запущен от имени определённого псевдопользователя и быть “запертым” в пространстве своих “владений”, чтобы ненароком не повредить остальную часть системы.

Для чего нужны группы?

Каждый пользователь принадлежит определённой первичной группе, которая, как правило, имеет то же имя, что и пользователь. Фактически пользователь является единственным членом своей первичной группы. Но ничто не мешает нам создать группу, например ftpusers и добавить пользователей в неё. Кстати, управлять принадлежностью пользователей может только суперпользователь root.

В общем случае группы нужды для того, чтобы предоставить определённым пользователям возможность совместной работы с некоторыми файлами или процессами. Ведь нежелательно, чтобы разные люди использовали одну учётную запись для доступа к файлам, нежелательно, чтобы один пароль был известен кому-то ещё. И группы могут предоставить разным пользователям равные привилегии.


В unix системах действует определенная иерархия пользователей. Следует понять, что в системе существует главный пользователь обладающий всеми правами — root. Остальные пользователи так или иначе ограничены в своих правах. Отсюда существует правило — работать в системе под ограниченным пользователем, и только для выполнения административных задач переключаться в суперпользователя root. У каждого пользователя в системе существует свой домашний каталог, в котором хранятся все личные настройки в виде конфигурационных файлов, по умолчанию этот каталог располагается в /usr/home, на который ведет символическая ссылка /home. Грубо говоря, для того чтобы установить ПО, управлять системными процессами, вносить изменения в системные файлы, настраивать сеть, монтировать диски, нужно будет переключаться в суперпользователя root. А для обычной повседневной деятельности (работа с документами, интернет, мультимедия и т.д.) достаточно простого пользователя. Если игнорировать это правило и использовать аккаунт root для повседневной деятельности, на порядок повышается уязвимость системы, так как все процессы будут запущены с правами суперпользователя, к примеру — браузер запущенный таким образом — грубейшее игнорирование правил безопасности системы. Злоумышленник, используя какую-либо уязвимость браузера, теоретически сможет получить полный доступ к управлению системой. К примеру, такой неправильный подход к безопасности — как работа интернет браузера с полными правами, реализован в операционных системах семейства Windows (собственно, там фактически нет нормального разделения прав пользователей), что приводит к простому механизму поражения системы, при помощи простого захода на зараженный сайт. Чтобы свести подобные вероятности к минимуму следует работать в системе в качестве пользователя и только при необходимости переключаться в суперпользователя root.

Каждый пользователь в системе может принадлежать к одной или нескольким группам. Членство в какой то определенной группе дает пользователю дополнительно те или иные права. К примеру, чтобы наш пользователь смог переключаться в суперпользователя, его следует поместить в группу wheel, это группа системных администраторов системы, к которой принадлежит root. В системе каждый пользователь (и группа) имеет свой идентификационный номер, пользователь root и группа wheel имеют при этом нулевые идентификаторы. В системе так же имеется масса пользователей не имеющих возможности подключиться в систему и не имеющие пароля авторизации, для системных нужд. Пример — пользователь ftp, от его имени выполняется штатный ftp сервер. Таких пользователей несколько.
Итак, наша задача создать пользователя — системного администратора, с авторизацией по паролю и возможностью входа в систему. Для этого входим в систему как суперпользователь root и набираем команду:

# adduser

После выполнения на дисплее появится следующий диалог для ввода данных. Запросы идут друг за другом, следует вводить необходимые данные и нажимать «enter»:

Username: alex — набираем имя пользователя (в данном случае «alex»), которое будет использоваться для входа в систему
Full name: Alexey — набираем полное имя, это имя будет фигурировать в личном профиле пользователя, его можно пропустить просто нажав «enter»
Uid (Leave empty for default): — в этой строке можно принудительно указать идентификационный номер пользователя, в нашем случае мы просто нажимаем «enter», представляя системе самой присвоить свободный идентификатор
Login group : wheel — в эту строку следует ввести группу к которой будет принадлежать пользователь в системе, по умолчанию имя группы аналогично имени пользователя, такая группа не будет обладать никакими дополнительными правами, а наша задача состоит в том, чтобы создать системного администратора, поэтому мы вводим имя группы системных администраторов «wheel» и нажимаем «enter»
Login group is wheel. Invite alex into other groups? : — данный запрос мы тоже пропускаем, это запрос о том, стоит ли сделать пользователя членом еще каких либо групп в системе, в нашем случае достаточно лишь одной группы «wheel», которую мы уже указали выше
Login class : — этот запрос мы тоже пропускаем, изменение этого параметра мы будем рассматривать ниже в статье о русификации, фактически в этой строке можно сразу задать класс пользователя «russian» для определения локали — раскладки и языка пользователя
Shell (sh csh tcsh nologin) : — этот запрос означает выбор командного процессора консоли, который собственно интерпритирует команды набранные на клавиатуре, по умолчанию командный процессор для пользователя — sh, поэтому пропускаем этот параметр нажимая «enter», изменение командного процессора мы рассмотрим в дальнейших статьях на сайте
Home directory : — в этой строке можно принудительно указать домашний каталог пользователя, в данном случае нас устраивает это размещение, поэтому снова нажимаем «enter»
Home directory permissions (Leave empty for default): — в этой строке можно принудительно задать права доступа для директории пользователя, в нашем случае так же оставляем все «по умолчанию» нажимая «enter»
Use password-based authentication? : — использовать ли пароль для авторизации пользователя в системе, по умолчанию стоит «yes» (да), если ответить «no» (нет) то штатным образом в систему войти мы не сможем, поэтому нажимаем «enter» тем самым отвечая «да»
Use an empty password? (yes/no) : — оставить ли пустой пароль для авторизации пользователя, в данном случае если ответить «да», то в систему возможно будет войти без пароля, что является неприемлимым, поэтому нажимаем «enter» тем самым отвечая «нет», т. к. по умолчанию указан ответ «no» (нет)
Use a random password? (yes/no) : — присвоить ли пользователю случайный пароль, в нашем случае тоже пропускаем этот вопрос нажимая «enter» и тем самым отвечая «no» (нет), т.к. пароль мы зададим самостоятельно
Enter password: — в данной строке следует ввести пароль пользователя, который будет ему присвоен, при этом ввод символов никак не отобразится в строке
Enter password again: — следует повторить ввод пароля
Lock out the account after creation? : — на этот вопрос следует так же ответить «no» (нет), т.к. вопрос гласит «Заблокировать ли аккаунт после создания?», нажимаем «enter»

После чего на экране появится профиль пользователя с запросом:

Username: alex
Password: *****
Full Name: Alexey
Uid: 1001
Class:
Groups: wheel
Home: /home/alex
Home Mode:
Shell: /bin/sh
Locked: no
OK? (yes/no):

На вопрос следует набрать «yes» (да) и нажать «enter», если набрать «no» (нет), то пользователь создан не будет. Итак набираем «yes» и нажимаем «enter»:
OK? (yes/no): yes
adduser: INFO: Successfully added (alex) to the user database.
На дисплее появится следующий запрос:
Add another user? (yes/no): no — на него уже следует ответить отрицательно, он гласит «Добавить ли еще одного пользователя?».
Goodbye!

Теперь в систему можно будет войти набрав логин — «alex» и пароль указанный в процессе создания пользователя. Для того, чтобы пользователю состоящему в группе wheel переключиться в режим суперпользователя root, следует набрать команду:
$ su
Password:
И после набора пароля суперпользователя root, аккаунт переключится. Возврат из режима суперпользователя в данном случае выполняется по команде:
# exit
Так же повторный набор этой команды уже из режима пользователя приведет к выходу из системы.

На этом процесс добавления пользователя закончен.

Для выполнения некоторых команд в системе FreeBSD требуется повышенные права (sudo ). В прошлой статья я уже рассматривал, сегодня разберемся, как создать пользователя во FreeBSD и выдать ему sudo права.

. Создание пользователя во FreeBSD

Для начала нам необходимо получить повышенные права (root ). Для этого выполним команду su и введем пароль от пользователя root :

Su Password: root@freebsd:/home/username #

Теперь переходим к созданию пользователя. Для это воспользуемся командой adduser :

# adduser

Username: sysadmin имя создаваемого пользователя Full name: Ivan Ivanov полное имя, можно оставить пусты, просто нажать Enter Uid (Leave empty for default): user id, можно ввести самому, начиная с номера 1001, либо нажать Enter, система выберет сама Login group : группа в которую входит создаваемый пользователь, по умолчанию совпадает с именем Login group is sysadmin. Invitesysadmin into other groups? : включить-ли пользователя в другие группы, если нет, жмем Enter Login class : класс пользователя, о них поговорим чуть позже, на данном этапе, жмем Enter Shell (sh csh tcsh nologin) : sh здесь предлагается выбрать системную оболочку, если вы не собираетесь давать данной учетной записи, удаленный доступ к системе, например через SSH, вписываем nologin, либо выбираем из предложенных вариантов, я обычно ставлю sh Home directory : назначаем домашнюю директорию, если значение по-умолчанию устраивает, жмем Enter Home directory permissions (Leave empty for default): права доступа на домашнюю директорию, что-бы оставить по-умолчанию, жмем Enter Use password-based authentication? : использовать-ли авторизацию по паролю Use an empty password? (yes/no) : можно-ли использовать пустые пароли Use a random password? (yes/no) : система предлагает сгенерировать вам пароль, если вы хотите согласиться, нужно написать yes на заключительном этапе создания учетной записи, будет показан сгенерированный пароль если предпочитаете ставить пароль вручную, жмите Enter Enter password: вводим пароль, имейте в виду, программа не покажет, что вы вообще что-либо вводите так что будьте внимательны Enter password again: повторный ввод пароля Lock out the account after creation? : заблокировать-ли учетную запись после создания

Если Вы планируете выдать в дальнейшем данному пользователю повышенные права, то сразу можно его при создании поместить в группу wheel .
В принципе создание пользователя на этом завершено

. Настройка sudo (root права) пользователю во FreeBSD

Для начала нам необходимо установить sudo . Устанавливать будем из пакетов. Для начала обновим пакеты:

Pkg update

Теперь установим сам пакет sudo

Pkg install sudo

После установки у нас появится файл sudoers в директории /usr/local/etc. Давайте проверим, появился ли он?:

Да, файл есть, все хорошо. Данный файл создается с атрибутами «только чтение». Нам необходимо разрешить его редактирование:

# chmod u+w /usr/local/etc/sudoers

Давайте теперь отредактируем файл:

# mcedit /usr/local/etc/sudoers

находим файле строку root ALL=(ALL) ALL и под ней добавим нашего созданного пользователя:

... ## ## Runas alias specification ## ## ## User privilege specification ## root ALL=(ALL) ALL sysadmin ALL=(ALL) ALL ## Uncomment to allow members of group wheel to execute any command # %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL ## Uncomment to allow members of group sudo to execute any command # %sudo ALL=(ALL) ALL

Для того, чтобы разрешить всей группе права суперпользователя, необходимо просто раскомментировать строчку %wheel ALL=(ALL) NOPASSWD: ALL Если вы ее расскоментируете в том виде, в котором она есть, то при вызове команды от суперпользователя пароль запрашиваться не будет. Чтобы пароль запрашивался, уберите надпись NOPASSWD . На этом все. Теперь, для того, чтобы вызвать команду с повышенными правами необходимо вначале набрать su . Например:

$ su service zabbix-server restart

Вроде бы мы подробно рассмотрели, как создать нового пользователя в операционной системе FreeBSD и как добавить ему права суперпользователя. Если у Вас что-то не получается или остались вопросы — задавайте их в комментариях, постараемся ответить и помочь.

Добавить пользователя или группу можно несколькими способами (sysinstall, adduser, pw …). Рассмотрим самые популярные программы для управления пользователями в ОС freeBSD .

1. Добавление пользователей используя adduser

И так рассмотрим указанную выше программу adduser (за слешами будет // мой комментарий) :

#adduser
Username: test // указываем имя будующего пользователя
Full name: Test User // полное имя
Uid (Leave empty for default): // юзер АйДи (индификационный номер в системе) желательно оставить пстым, система сама назначит
Login group : // вносим пользователя в его группу. оставляем пустым
Login group is test. Invite test into other groups? : wheel // можно добавить пользователя в другую группу если есть необходимость
Login class : // оставим пустым
Shell (sh csh tcsh zsh nologin) : tcsh // выбираем ‘оболочку’ командной строки, лучше вписать tcsh, sh не удобен IMHO
Home directory : // домашняя папка можно разместить где удобно но лучше оставить по дефолту
Use password-based authentication? : // оставляем пустым
Use an empty password? (yes/no) : // пользователь с пустым паролем это не безопасно, выбор по умолчанию no
Use a random password? (yes/no) : // система может генерировать случайный пароль по умолчанию no
Enter password: // если вы отвергли 2 верхних пункта вам предложено ввести пароль самостоятельно
Enter password again: // повторите ввоб пароля
Lock out the account after creation? : // заблокировать учетную запись пользователя после создания
Username: test
Password: ****
Full Name: Test User
Uid: 1001
Class:
Groups: test wheel
Home: /home/test
Shell: /usr/local/bin/tcsh
Locked: no
OK? (yes/no): yes // если вышеуказанное совпадает с тем что вы хотели вводите yes
adduser: INFO: Successfully added (test) to the user database.
Add another user? (yes/no): no // предложение добавить еще пользователя, ненасытный, ему только пользователей подавай
Goodbye! // и вам не хворать
#

2. Удаление пользователей используя rmuser

И так добавить - добавили. Теперь нужно знать как удалить /> Помните «ломать - не строить!» Удалить куда проще чем добавить пользователя и назначить ему нужные настройки и права.
Удаляем следующей программой: rmuser
Что может эта программа:

  1. Удаление записи пользователя из crontab (если она присутствует).
  2. Удаляет задачи at , принадлежащие пользователю.
  3. Уничтожает все процессы, принадлежащие пользователю.
  4. Удаляет пользователя из локального файла паролей.
  5. Удаляет домашний каталог пользователя (если он принадлежит пользователю).
  6. Удаляет принадлежащую пользователю входящую почту из /var/mail .
  7. Удаляет все файлы, принадлежащие пользователю, из каталогов с временными файлами, например /tmp .
  8. Наконец, удаляет имя пользователя из всех групп, которым оно принадлежит, в /etc/group.

# rmuser test // удаляем пользователя test
Matching password entry:
test:*:1001:1001::0:0:Test User:/home/test:/usr/local/bin/tcsh
Is this the entry you wish to remove? y // перестраховка, того ли юзера вы собрались удалять
Remove user’s home directory (/home/test)? y // удалить пользовательскую папку со всем содержимым?
Updating password file, updating databases, done.
Updating group file: trusted (removing group test - personal group is empty) done.
Removing user’s incoming mail file /var/mail/test: done.
Removing files belonging to test from /tmp: done.
Removing files belonging to test from /var/tmp: done.
Removing files belonging to test from /var/tmp/vi.recover: done. // всё! пользователь ушел в мир иной и все папки за ним подчищены .
#

Если желаете что бы программа не грузила Вас всеми этими вопросами - используйте параметр -y (rmuser -y ) фактически мы соглашаемся на все условия.

3. Смена пароля программами passwd и chpass

Как изменить пароль у пользователя freeBSD? - спросите Вы. Элементарно! - ответит вам любой читавший дальше =).
Программки для смены пароля: passwd и chpass .
passwd - это обычный способ изменения собственного пароля пользователя, или пароля другого пользователя суперпользователем.
Предствим на минутку что Вы простой юзер с именем test и хотите себе поменять пароль:

% passwd

Old password: // вводим старый пароль
New password: //вводим новый пароль
Retype new password: // повторяем новый пароль
passwd: updating the database…
passwd: done // готово пароль изменен

Теперь представим что Вы суперпользователь и хотите изменить пароль простому смертному юзеру:

# passwd test // обязательно укажите имя пользователя иначе измените свой пароль
Changing local password for test.
New password: // новый пароль (как видите старый пароль знать не нужно - преимущества суперюзера)
Retype new password: //повторим пароль
passwd: updating the database…
passwd: done // готово, хехе

Рассмотрим теперь более функциональную примочку - chpass .
chpass - может не только менять пароль пользователя, а и остальные его данные.
Только системные администраторы с правами суперпользователя могут изменять информацию и пароли других пользователей с помощью программы chpass . Простые пользователи тоже могут использовать эту программу, но изменять позволено лишь небольшую часть этой информации, и только для своей учетной записи.
И так работа программы chpass для суперюзера:

#Changing user database information for test .
Login: test
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change :
Expire :
Class:
Home directory: /home/test
Shell: /usr/local/bin/tcsh
Full Name: Test User
Office Location:
Office Phone:
Home Phone:
Other information:

4. Управление пользователями и группами используя pw

Ну и самое вкусное в конце. pw - это утилита командной строки для создания, удаления, модифицирования и отображения пользователей и групп. Она функционирует как внешний интерфейс к системным файлам пользователей и групп. У pw очень мощный набор параметров командной строки, что делает это программу подходящей для использования в shell скриптах, но новым пользователям она может показаться более сложной, чем другие представленные здесь команды.
Добавим юзера test с помощью утилиты pw :

# pw useradd test -s /bin/tcsh -c «Test user» -m -b /home -e 03-07-2011 -p 02-07-2011

Пояснение использованных ключей:
-s – указывает какой терминал будет использоваться, поле shell
– комментарии к созданному пользователю, поле gecos
-e – время жизни аккуанта, поле expire. Формат поля аналогичен опции ‘-p’
-p – время жизни пароля, поле change. Формат задания даты или времени таков:
dd-mm-yy, где dd – день, mm – месяц, yy – год. Или используется следующий
формат: +0mhdwoy, где m – минуты, h – часы, d – дни, w – недели, o – месяц, y - год
-m – заставляет создать домашний каталог пользователя и скопировать в него стандартные файлы
и каталога /usr/share/skel
-b – базовая директория в которой будет находится домашний каталог пользователя, поле home_dir
-L – задаёт класс для пользователя из файла login.conf, поле class

Что бы создать группу noname и переместить в нее пользователя test используем следующую комбинацию:

# pw groupadd noname -M test

Что бы добавить пользователя test в уже существующую группу wheel используем:

# pw usermod test -g wheel

Расписывать все возможности pw можно долго. Основные возможности перед Вамм.

5. Перечень всех известных программ и утилит о управлению учетными записями и группами пользователей

Ну и в завершении перечислю все возможные приложения и утилиты для мониторинга/изменения/добавления пользователей и групп:

pw(8) – создание, удаление, изменение, отображение пользователей и групп;
adduser(8) – интерактивное добавление нового пользователя;