Управление пользователями в FreeBSD. MiniHowTo: 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) – интерактивное добавление нового пользователя;
rmuser(8) – удаление пользователя из системы;

Для выполнения некоторых команд в системе 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 и как добавить ему права суперпользователя. Если у Вас что-то не получается или остались вопросы — задавайте их в комментариях, постараемся ответить и помочь.

Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX. Так как FreeBSD является многопользовательской ОС и принадлежит к семейству ОС относящихся к общему названию UNIX, поэтому умение грамотно управлять пользователями позволит избежать различных неприятностей.

Учётные записи пользователей и групп хранятся в двух файлах:

/etc/master.passwd – в данном файле хранятся учётные данные пользователей и их пароли в зашифрованном виде.
/etc/group – файл, отвечающий за группы

В FreeBSD используется технология теневых паролей – это когда системные данные пользователей разделены на два файла:

1.файл /etc/master.passwd в котором находятся пароли в зашифрованном виде, он имеет права только на чтение и запись для пользователя root

2.файл /etc/passwd , созданный с помощью команды pwd_mkdb(8) (генерация базы с паролями) из файла /etc/master.passwd , он имеет права на чтение для группы и других пользователей, в нём пароли заменены на *. Также с помощью команды pwd_mkdb(8) из файла /etc/master.passwd создаются два файла - /etc/pwd.db и /etc/spwd.db (индексированные базы данных), они предназначены для ускорения поиска, в случае большого количества системных пользователей. Файл /etc/spwd.db является секретным как и файл /etc/master.passwd и имеет теже права доступа и владельца.

Рассмотрим синтаксис файла /etc/master.passwd:

root:$1 $SJSDMXQE $LRpetLGNt5xO8k980r2om .:0 :0 ::0 :0 0 :0 ::0 :0 1 :1 ::0 :0 2 :5 ::0 :0 3 :7 ::0 :0 4 :65533 ::0 :0 5 :65533 ::0 :0 7 :13 ::0 :0

Каждая новая строка в файле описывает пользователя, она содержит в себе столбцы разделённые (:).

Столбцы по порядку:

1.name – логин пользователя, который будет использоваться при входе в систему
2.password – зашифрованный пароль в файле /etc/master.passwd и * в /etc/passwd
3.uid – уникальный идентификатор пользователя.
4.gid – уникальный идентификатор группы.
5.class – класс настроек и установок, который берётся из файла /etc/login.conf
6.change – время жизни пароля, т.е период через который необходимо сменить пароль. Количество секунд с 1 января 1970. Проверить на какую дату указывают секунды в поле можно с помощью команды: date –r seconds , где seconds – значение поля.
7.expire – время жизни аккуанта, после прошествия этого периода времени он заблокируется, 1 января 1970. Проверить на какую дату указывают секунды в поле можно с помощью команды: date –r seconds , где seconds – значение поля.
8.gecos – общая информация о пользователе
9.home dir – домашний каталог пользователя
10.shell – оболочка, которую будет использовать пользователь

При создании файла /etc/passwd из файла /etc/master.passwd поля class, change, expire удаляются, а пароль заменяется на *.
Поле логина (name) не может начинаться с символа (-), так же не советуется использовать прописные буквы в имени пользователя и разделять логин символом (.), что может вызвать проблемы при работе с почтой. В файле /etc/master.passwd поле password зашифровано, если поле отсутствует, т.е вместо пароля стоит символ *, то доступ к машине вы не получите. Для быстрого редактирования файла /etc/master.passwd и без последующего применения команды pwd_mkdb(8) применяется команда vipw(8) , это тот же редактор vi(1) , поэтому перед применение команды vipw(8) ознакомьтесь с man страницей по vi(1) .

Пример:

# vipw root:$1 $SJSDMXQE $LRpetLGNt5xO8k980r2om .:0 :0 ::0 :0 :Charlie &:/root:/bin/csh toor:*:0 :0 ::0 :0 :Bourne-again Superuser:/root: daemon:*:1 :1 ::0 :0 :Owner of many system processes:/root:/usr/sbin/nologin operator:*:2 :5 ::0 :0 :System &:/:/usr/sbin/nologin bin:*:3 :7 ::0 :0 :Binaries Commands and Source:/:/usr/sbin/nologin tty:*:4 :65533 ::0 :0 :Tty Sandbox:/:/usr/sbin/nologin kmem:*:5 :65533 ::0 :0 :KMem Sandbox:/:/usr/sbin/nologin games:*:7 :13 ::0 :0 :Games pseudo-user:/usr/games:/usr/sbin/nologin

При использовании (*) в /etc/master.passwd вместо поля password запрещается авторизация в системе так как символ (*) не может быть зашифрованным паролем. Например, для временной блокировки пользователя, можно использовать вместо поля password в файле /etc/master.passwd такую комбинацию *LOCKED* или добавить такую комбинацию в начало пароля, если он существует, а при разблокировке просто её удалить, для этого Вам понадобится команда vipw(8) . Для того, чтобы посмотреть как блокировать аккуант с помощью командной строки прочтите man по команде pw(8) .
  Поле gecos дающее общую информацию о пользователи, содержит в себе следующие поля, разделённые запятой:
name – полное имя пользователя
office – номер офиса
wphone – рабочий телефон
hphone – домашний телефон

Поле home_dir , определяет путь к домашнему каталогу пользователя, владельцем которого он будет являться.
Поле shell , определяет оболочку пользователя, список доступных оболочек для пользователя можно посмотреть в файле /etc/shells . Для пользователя root изменять текущую оболочку не рекомендуется, т.к в случае аварии файловая система /usr может быть не примонтирована, в следствии чего пользователь root не получит доступ к системе.
Если Вы хотите запретить доступ пользователя к системе, замените его оболочку на /sbin/nologin . Данная программа более корректно, чем другие (пр.: /dev/null) обработает попытку входа пользователя.
 
  При добавлении нового пользователя необходимо выбрать уникальное имя (login name) которое не будет встречаться в файле /etc/passwd и /etc/mail/aliases . Так же имя не должно начинаться с символа (-) и содержать в себе символ (.), и прописные буквы, так как могут возникнуть непредвиденные ситуации при работе с почтой. Новый пользователь получает уникальный id – UID и становится членом группы, имя которой совпадает с именем пользователя, в которой он будет один. Такая стратегия именования группы позволяет улучшить безопасность и гибкость при управлении доступом. UID и имя пользователя(login name) являются уникальными в системе и будут использоваться при осуществлении контроля доступа к файловой системе. После добавления пользователя в систему, в его домашний каталог копируются файлы .profile (выполняется при заходе пользователя в систему), если используется оболочка /bin/sh или.cshrc(при старте оболочки) и .login (при заходе пользователя в систему), если используется оболочка /bin/csh . Все эти файлы копируются из каталога /usr/share/skel .

  В файле /etc/group находятся все локальные группы системы. Данный файл можно редактировать любым текстовым редактором на Ваше усмотрение, т.е чтобы добавить группу достаточно отредактировать вышеуказанный файл.
  Файл состоит из отдельных строк, столбцы в которых разделены с помощью специального символа (:). Строка состоит из следующих столбцов или полей:
group – название или имя группы
password – зашифрованный пароль для группы
gid – уникальный номер группы
member – члены данной группы

В данном файле, каждая строка, начинающаяся с символа (#) является комментарием.
  Поле group является именем группы, которое определяет доступ пользователям к файлам, являющимися членами данной группы. С полем group ассоциируется поле gid, которое определяет уникальный идентификатор группы. Два этих поля неразрывно связаны, точно также как имя пользователя и его UID. Поле password является необязательным, оно редко используется и поэтому символ (*) никак лучше подходит вместо шифрованного пароля. Поле member содержит членов группы, виде имён пользователей разделённых между собой с помощью сивола (,) – запятая. В группе может находится не больше 200 пользователей. Максимальная длина строки в файле /etc/group 1024 символа.

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

Управление ресурсами пользователя осуществляется с помощью классов, которые определяются в специальном файле /etc/login.conf , а также задаются пользователю при его добавлении. Если для пользователя не определён какой-либо класс, то ему присваивается класс – default. Каждый класс имеет набор характеристик в виде имя=значение. Для ускорения доступа к данным система непосредственно не читает файл /etc/login.conf , а вместо этого читает файл /etc/login.conf.db , который создаётся специальной командой cap_mkdb(1)

cam_mkdb /etc/login.conf

Поэтому после каждого изменения файла /etc/login.conf не забывайте исполнять команду cap_mkdb(1)
  Изменить или задать класс пользователю можно в файле /etc/master.passwd , в котором для этого имеется специальное поле class . Это обсуждалось выше. Пользователь с UID = 0, т.е администратор системы (root) не имеет действующего класса, к нему применяется запись root в /etc/login.conf или класс default, если запись root отсутствует.
  Пользователь может для себя создать индивидуальный файл с настройками ресурсов в домашнем каталоге под названием ~/login.conf , этот файл использует тот же синтаксис, что и файл /etc/login.conf , но он содержит только запись id с именем «me». В этом файле пользователь может только уменьшать предоставляемые ему ресурсы, но никак не увеличивать.
  В качестве разделителя полей в файле /etc/login.conf используется символ (:). Первое поле в файле означает имя класса, который в последующем будет применяться к тому или иному пользователю.

  Каждое поле в файле /etc/login.conf может принимать следующие значения:
bool – если параметр является булевым, то оно может принимать следующие значения – true или false; Просто запись опции в файле /etc/login.conf без указания явного значения означает – true. Для определения false необходимо явно указать.
file – опция принимает значение в виде пути к файлу;
program – опция принимает значение в виде пути к исполняемуму файлу или программе;
list – опция принимает значения в виде списка разделённого запятой или пробелом;
path – опция принимает значения путей, разделённых запятой или пробелом. Тильда (~) раскрывается в домашний каталог пользователя;
number – числовой значение, в десятичном, шестнадцатиричном или восьмеричном виде.
string – в виде строки;
size – размер. По умолчанию принимается в байтах. Может принимать следующие суффиксы для обозначения единиц размеров:
b – байты
k – килобайты
m – мегабайты
g – гигабайты
t – терабайты
Возможно объединение значений с указанием соответствующих суффикосв: 1m30k
time – период времени, по умолчанию выраженный в секундах. В качестве суффикса используются следующие обозначения:
y – год
w – неделя
d – день
h – час
m – минуты
s – секунды
Возможно объединение значений с указанием соответствующих суффиксов: 2h30m
unlimited – отсутствие ограничений

Ограничение ресурсов:

Название опции   Тип значения Описание
coredumpsize size Ограничивает размер файла coredump
cputime time Ограничивает время использования процессора
datasize size Максимальный размер данных
filesize size Максимальный размер файла. Запрещает создавать файлы больше указанного размера
maxproc number Максимальное число процессов которые может создать пользователь
memorylocked size Максимальный размер в core memory котрую может заблокировать процесс
memoryuse size Максимальный размер памяти которую может использовать процесс
openfiles number Максимально количество файлов которые может открыть каждый процесс
sbsize size Максимально разрешённый размер сокетбуфера
vmemoryuse size Максимально разрешенный размер виртуальной памяти для каждого процесса
stacksize size Максимальный размер стека


  Ресурсы могут ограничиваться как мягкими, так и жёсткими ограничениями, разница между ними состоит в том, что жёсткие ограничения пользователь не сможет увеличивать, а мягкие сможет, но не больше чем жёсткое значение. Для обозначения мягких и жёстких ограничений используются специальные суффиксы –max и –cur . Пр: filesize-max

Окружение пользователя:

Название опции   Тип значения   Дефолт   Описание
charset   string     Устанавливает значение переменной окружения $MM_CHARSET. Пр: KOI8-R
hushlogin   bool   false   Разрешает (false) показывать файл /etc/motd при загрузке или запрещает (true). Тоже самое что присутствие файла ~/.hushlogin в домашнем каталоге.
ftp-chroot   bool   false   Делать chroot(2) пользователя в его домашнем каталоге при заходе по FTP. Применительно только к стандартному демону ftpd(8).
ignorenologin   bool   false   Логин не блокируется nologin.
label   string     Политика MAC (maclabel(7)) применяемая к пользователю.
lang   string Устанавливает значение переменной окружения $LANG. Пр: ru_RU.KOI8-R
manpath   path     Определяет пути поиска man страниц
nocheckmail   bool   false   Показывать состояние почтового ящика при заходе пользователя в систему.
nologin   file     Если данный файл существует то отображается его содержимое при заходе в систему и сессия закрывается. Можно указать данную опцию в классе для пользователя и заблокировать для него вход в систему если даже у него в файле /etc/master.passwd установлена оболочка.
path   path     Определяет пути поиска выполняемых файлов или программ.
priority   number     Определяет первоначальный приоритет пользователя (nice(1)).
requirehome   bool   false   Требуется ли пользователю рабочий домашний каталог. Если его нет то пользователь не сможет войти в систему.
setenv   list     Устанавливает переменные окружения в виде переменная=значение разделённые запятой
shell   prog     Оболочка пользователя. Имеет приоритет над оболочкой указанной в файле /etc/master.passwd.
term   string     Определяет тип терминала.
timezone   string     Устанавливает значение переменной окружения $TZ. Зоны находятся /usr/share/zoneinfo.
umask   number   022   Определяет права на создаваемые файлы. Права рассчитываются вычитанием маски из 666 а на каталог из 777.
welcome   file   ./etc/motd   Файл приветствия который показывается при заходе пользователя в систему.
Название опции   Тип значения   Дефолт   Описание
copyright   file     Дополнительный файл содержащий информацию о кооперайтах
host.allow   list     Список удалённых хостов с которых пользователи данного класса могут заходить на машину.
host.deny   list     Список удалённых хостов с которых пользователи данного класса не могут заходить на машину.
login_prompt   string     Строка выводимая при запросе логина login(1)
login-backoff   number     Определяет величину задержки умноженную на 5 секунд между неправильными логинами после того как исчерпаются попытки входа параметр ниже. Применимо к неудалённому терминалу.
login-retries   number   10   Количество разрешённых неправильных попыток входа прежде чем логин будет признан неудачным.
passwd_format   string     Формат в котором будет шифроваться новый пароль. Значения которые можно использовать – ‘md5’ ‘blf’ ‘des’. Советую по умолчанию использовать формат шифрования – "blf’ так как это наиболее криптостойкий алгоритм.
passwd_prompt   string     Приветствие для пароля.
times.allow   list     Список периодов времени в течение которых заходить в систему можно
times.deny   list     Список периодов времени в течение которых заходить в систему запрещено
ttys.allow   list     Список терминалов или групп терминалов которые пользователь с данным классом может использовать. Группы терминалов указаны в файле /etc/ttys(5)
ttys.deny   list     Список терминалов или групп терминалов которые пользователю с данным классом запрещено использовать. Группы терминалов указаны в файле /etc/ttys(5)
warnexpire   time     Период времени за который необходимо предупреждать пользователя об истечении срока действия учётной записи.
warnpassword   time     Период времени за который необходимо предупреждать пользователя об истечении срока действия пароля.


В опциях host.allow и host.deny разделителем хостов является запятая.
 
  В опциях times.allow и times.deny записи разделяются запятой. Значения периодов времени записываются в 24 –х часовом формате, отделённых друг от друга дефисом.
Для примера: MoThSa0200-1300 Данная запись расшифровывается следующим образом: доступ пользователю разрешён по понедельникам, четвергам, субботам в период с 2 –ч часов ночи до часу дня. Если обе опции в пользовательском классе отсутствуют, то доступ разрешается в любое время. Если период времени разрешённый в опции times.allow запрещается периодом времени в файле times.deny , то приоритет имеет опция times.deny .
 
  В опциях ttys.allow и ttys.deny содержаться записи tty устройств, разделённые запятой (без префикса /dev/) и список ttygroups (смотрите getttyent(3) и ttys(5) ) к которым пользователь данного класса имеет или не имеет доступ. Если в опции нет ни одной записи, то пользователь имеет неограниченный доступ.
 
  Параметры пароля такие как минимальная длинна (minpasswordlen) и параметр отвечающий за предупрждение, если пользователь вводит пароль только в нижнем регистре (minpasswordcase) не поддерживаются, для этих ограничений применяется pam модуль pam_passwdqc(8) .

  Задание классов для системных пользователей является очень хорошим средством индивидуального ограничения пользователя, но используйте это средство осознанно и с осторожностью.

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

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

Работая в консоли FreeBSD Вы можете легко создать нового пользователя, используя команду aduser. Запуск команды вызывает интерактивный диалог, в котором запрашивается вся необходимая информация. Пользователь будет создан только после ответа на все вопросы системы.

Скриншот иллюстрирует все вопросы задаваемые командой adduser, мы добавили пользователя shitus.

Если вы хотите прервать создание учетной записи, нажмите ctrl+c.

Разберем что означает каждый пункт -

Username: Имя аккаунта

Full name: Настоящее имя пользователя

Uid: Пользовательский id (User ID), каждый пользователь получает уникальный цифровой id, начинающийся от 1000 и выше. Числа ниже 1000 зарезервированы за системой. Каждый новый пользователь получает уникальное число (ID), которое соответственно возрастает с каждым новым аккаунтом. Вы можете оставить эту опцию пусто, т.к. система автоматически добавит уникальный числовой номер для пользователя.

Login group: Пользовательская группа по умолчанию. В юниксовых системах нормально если пользователь состоит в своей собственной группе. Вы можете оставить эту опцию пустой, система сама добавит учетную запись в ее собственную группу по-умолчанию. Следующим щагом система запросит добавлять ли пользователя в другие группы - Login group is shitus. Invite shitus into other groups? Данный пункт оставляю на Ваше усмотрение, ибо задачи у учетных записей разные, например для повышения уровня доступа можно добавить в группу wheel, но я рекомендую глубоко подумать, чем добавлять в эту или в иную другую группу.

Login class: Класс пользователя, используется для гибкости администрования, по-умолчанию default, если вы не очень хорошо владеете вопросом, советую его не менять. Бывают еще например классы -root, standart и т.д.

Shell: устанавливает оболочку (shell или командный интерфейс). По-умолчанию это /bin/sh. Вы можете установить какой-либо другой, например bash. Это возможно проделать и позже, когда поймете, что конкретно Вам нужно от оболочки

Home directory: Домашняя папка, юзерская папка для хранения своих файлов. По умолчанию юзер имеет полные права только на нее. Все юзерские домашние папки располагаются в /usr/home, Вы также можете увидеть папку /home в корневой директории /, но это всего лишь символическая ссылка на /usr/home/

Home directory permissions : Оставляем по-дефолту, в комментариях особо не нуждается.

User password based authentication: Использовать аутентификацию по паролю, по-умолчанию стоит "yes", поэтому просто нажимаем ввод. Надеюсь никому не надо напоминать, что использование пароля обязательно!

Use an empty password: Пользователь может задать свой собственный пароль при первом входе, по умолчанию установлено в "No", что означает необходимость установить пароль сейчас.

Use a random password: По-умолчанию стоит "No". Если вы выбирете "Yes", то система сгенерирует случайный пароль для пользователя. Пароль будет показан после создания пользователя -

Adduser: INFO: Password for (shitus) is: ntFWk55HRq

Lock out the account after creation: Заблокировать аккаунт после создания, то бишь аккаунт будет создан, но залогиниться от него не получится, пока вы его не разблокируете.

После создания акканту, adduser покажет суммарную информацию о созданном пользователе. После чего последует запрос на создание еще одного пользователя.

Удаление пользователя из системы.

Для удаления пользоователя из системы в Freebsd используется команда rmuser с именем пользователя (его можно и не указывать, тогда команда следующим шагом его запросит). В нашем случае мы удаляем пользователя shitus и его домашнюю папку, вводим rmuser shitus и отвечаем на оба вопроса yes, пользователь удален.



Изменение пароля пользователя Freebsd

В FreeBSD два основных типа пользователей, root и обычный пользователь. Пользователь root имеет возможность изменять пароль любого обычного пользователя, но обычный пользователь может изменять только свой пароль.

Если вошли как root и желаете изменить пароль пользователя shmitus, то используем команду -

Passwd shmitus После ввода команды у Вас запросят новый пароль для пользователя, а также его подтверждение.

| |

Как и в любой другой 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: ,