MiniHowTo: FreeBSD работа с учетными записями пользователей. Управление пользователями в FreeBSD

Получил паспорт, после вклейки фотки, выгляжу лучше чем в 16:) Но сегодня не обо мне, а о пользователях во FreeBSD
0. Управление пользователями FreeBSD
1. Перенос пользователей с другого сервака
2. Работа с пакетами для конкретного пользователя
3. Меняем стандартный shell на самописный
4. Делаем удаленную консольку русской с UTF8

adduser Добавить пользователя
-С конфигурирование профиля по умолчанию /etc/adduser.conf
Чтобы не отвечать каждый раз на одинаковые вопросы, делаем профиль и по нему создаем пользователей:)

Полезные параметры настройки для файла adduser.conf
defaultGroup Имя группы по умолчанию, к которой будут добавляться новые пользователи (если значение не определено, для каждого пользователя будет создаваться его собственная группа)
defaultclass Класс доступа по умолчанию
passwdtype Может иметь значения nо (учетная запись останется заблокированной, пока root не назначит пароль), none (пароль не установлен), yes (пароль устанавливается при создании учетной записи) или random (будет назначен случайный пароль)
homeprefix Каталог, где будут размещаться домашние каталоги пользователей (например, /home)
defaultshell Командная оболочка, назначаемая по умолчанию (здесь можно указать любую командную оболочку из /etc/shells)
udotdir Каталог, где находятся заготовки файлов пользователя, имена которых начинаются с символа «точка»
msgfile Файл, содержащий текст электронного письма, отправляемого каждому пользователю сразу после создания учетной записи.

Файлы /etc/master.passwd, /etc/passwd, /etc/spwd.db и /etc/pwd.db хранят информацию об учетных записях пользователей.
Файл /etc/master.passwd является источником информации для аутентификации и содержит пароли пользователей в зашифрованном виде. Доступно только rooty. приоритетный файл.
В файле /etc/passwd перечислены все учетные записи без привилегированной информации (например, без зашифрованных паролей).
Файл /etc/spwd.db создается непосредственно из /etc/master.passwd и содержит секретную информацию о пользователях, этот файл доступен для чтения только пользователю root. Файл /etc/pwd.db доступен для чтения всем пользователям, но содержит ограниченный набор сведений, содержащихся в файле /etc/passwd.

pwd_mkdb автоматически запускается для синхронизации между файлами, далее будет пример с использованием этой утилиты
passwd изменение пароля простой пользователь
passwd имя_пользователя смена пароля любого пользователя root
chpass изменение учетных данных пользователя втч класс доступа
chpass имя_пользователя под root
vipw редактирует файл /etc/master.passwd напрямую

Каждой учетной записи соответствует отдельная строка в файле /etc/ master.passwd, которая состоит из 10 полей, разделенных двоеточиями. Это следующие поля:
Имя учетной записи:Зашифрованный пароль:Числовой идентификатор пользователя (UID):Числовой идентификатор группы (GID):Класс доступа:Срок действия пароля(в секундах с начала времен):Срок действия учетной записи:Личные данные(полное имя, адрес,телефон, итд):Домашний каталог пользователя:Командный интерпретатор
Пользователи с несуществующим домашним каталогом по умолчанию не могут заходить в систему, хотя такое поведение можно изменить с помощью параметра настройки requirehome в файле login.conf

rmuser удаление пользователя
pw управление пользователями
pw lock имя заблокировать учетку
id узнать имя текущего пользователя

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

Всякий раз, когда пользователь пытается войти в систему, FreeBSD проверяет содержимое файла /etc/login.access..
В файле /etc/login.access есть три поля, разделенных двоеточиями. Первое поле предоставляет (+) или отнимает (-) право на вход в систему; второе поле — список пользователей или групп; третье — список источников подключений. Можно также использовать выражения ALL (все) и ALL EXCEPT (все, за исключением) например
-:ALL EXCEPT wheel: console
-:ALL EXCEPT wheel:ALL EXCEPT 192.168.89.128 192.168.170.44
Описания классов доступа находятся в файле /etc/login.conf и определяют, какие данные и какие ресурсы могут предоставляться пользователям.
После редактирования login.conf необходимо обновить базу данных login, чтобы изменения вступили в силу:
# cap_mkdb /etc/login.conf

Переменные login.conf для ограничения ресурсов
cputime Максимальное время процессора, которое может использовать любой процесс
filesize Максимальный размер одного файла
datasize Максимальный объем памяти, который может потреблять один процесс для хранения данных
stacksize Максимальный объем стека, доступный одному процессу
coredumpsize Максимальный размер дампа памяти
memoryuse Максимальный объем памяти, который процесс может заблокировать
maxproc Максимальное количество процессов, которые могут быть одновременно запущены одним пользователем
openfiles Максимальное количество открытых файлов на один процесс
sbsize Максимальный размер буфера сокета, который может задействовать приложение пользователя
Имеется возможность задать текущие (current) ограничения на ресурсы — носят рекомендательный характер, и пользователь может менять их по своему желанию.
Для задания текущего ограничения добавьте -cur к имени переменной. Для установления жесткого лимита добавьте -max.
:mахрrос-сur: 30:\
:mахрrос-mах: 60:\
Задание параметров среды по умолчанию в login.conf
hushlogin Если присутствует в определении класса, системная информация не выдается при входе в систему.
ignorenologin Если присутствует в определении класса, пользователь может войти в систему, даже когда файл /var/run/nologin существует.
ftp-chroot Если присутствует в определении класса, пользователи при работе с FTP помещаются chroot-окружение.
manpath Список каталогов для переменной окружения $ MAN PATH.
nologin Если присутствует, пользователь не может войти в систему.
path Список каталогов для переменной окружения $РАТН.
priority Приоритет (nice) пользовательских процессов по умолчанию
setenv Список переменных окружения, разделенных запятыми, с их значениями.
umask Значение umask по умолчанию (см. builtin(1)). Это значение всегда должно начинаться с 0.
welcome Полный путь к файлу, содержащему приветственное сообщение.
shell Полный путь к командному процессору, который будет запущен после входа в систему. Эта запись подменяет командный процессор, указанный в /etc/master.passwd. Однако переменная окружения $SHELL будет указывать на командный процессор, заданный в файле паролей, поэтому окружение будет противоречивым. Изменение значения этой переменной — замечательный способ раздосадовать пользователей
term Тип терминала по умолчанию. Чуть ли не каждая программа, пытающаяся установить тип терминала, подменяет эту запись
timezone Значение по умолчанию переменной окружения $TZ.
Параметры настройки аутентификации:
minpasswordlength Задает минимальную длину пароля.
\:minpasswordlen=28:\
passwd_format Задает алгоритм, применяемый для шифрования паролей в /etc/master.passwd. Значение по умолчанию - md5. Другие допустимые значения — des (DES), blf (Blowfish) и nthash (Windows NT). DES наиболее полезен, когда необходимо иметь одинаковые пароли на компьютерах с различными операционными системами. Blowfish — очень ресурсоемкий алгоритм. Алгоритм nthash кака.
mixpasswordcase Если это свойство задано, то при следующем изменении паролей пользователи не смогут задавать в них только строчные буквы.
host.allow Пользователи в классе с этим значением могут применять rlogin и rsh. Такая установка настоятельно не рекомендуется.
host.deny Это значение используется при работе с rlogin и rsh. Избегайте их как несвежего мяса.
times.allow Определяет промежуток времени, когда пользователь может входить в систему. Для задания времени необходимо в полях, разделенных двоеточиями, указать дни и периоды времени. Дни обозначаются двумя первыми буквами названия дня недели (Su, Mo, Tu, We, Th, Fr и Sa). Время указывается в стандартном 24-часовом формате. Например, если пользователю разрешено входить в систему только по средам между 8.00 и 17.00, подойдет такая запись:
:times.allow=We8-17:\
times.deny Определяет промежуток времени, когда пользователю нельзя входить в систему.

Полный список флагов файлов chflags(1).
sappnd Системный флаг «только добавление», который может устанавливать только root. Этот флаг нельзя изменить, когда система работает на уровне безопасности 1 и выше.
schg Системный флаг «неизменяемости», нельзя редактировать, перемещать, заменять, который может устанавливать только root. Этот флаг нельзя изменить, когда система работает на уровне безопасности 1 и выше.
sunlnk Системный флаг «запрет на удаление», который может устанавливать только root. Этот флаг нельзя изменить, когда система работает на уровне безопасности 1 и выше.
uappnd Пользовательский флаг «только добавление», который может устанавливать только владелец файла или root. Как в случае с установленным системным флагом sappnd, в файл с флагом uappnd можно добавлять записи, однако этот файл нельзя удалять или редактировать. Владелец файла и root могут удалить этот флаг в любое время.
uchg Пользовательский флаг «неизменяемости», который может устанавливать только владелец файла или root.
uunlnk Пользовательский флаг «запрет на удаление», который может установить только владелец файла или root.
например
# chflags schg /boot/kernel/kernel
или рекурсивно
# chflags -R schg /bin
ls -lo просмотреть флаги файлов
снятие флага с помощью префикса no
# chflags noschg /boot/kernel/kernel

Уровень безопасности системы, вступающий в силу при начальной загрузке, можно задать с помощью параметра
kern_securelevel_enable=»YES»
kern_securelevel=0 в файле rc.conf.

Уровень безопасности -1 устанавливаемый по умолчанию,
Уровень безопасности 0 используется только в начале загрузки системы. Он не предлагает никаких специальных функций. Когда система переходит в многопользовательский режим, уровень безопасности автоматически увеличивается до 1. Установка kern_securelevel=0 в /etc/ rc.conf эквивалентна установке kern_securelevel=1. Однако это может быть полезно, если во время загрузки системы запускаются сценарии, которые не могут выполнять необходимые действия на более высоких уровнях безопасности.
Уровень безопасности 1
Системные флаги файлов не могут быть сняты.
Нельзя загружать и выгружать модули ядра
Программы не могут записывать данные напрямую в системную память через устройства /dev/mem или /dev/kmem.
Закрыт доступ к /dev/io.
На монтированные диски нельзя записывать данные напрямую, а значит, нельзя форматировать разделы. (Файлы можно записывать на диск через стандартный интерфейс ядра, нельзя лишь обращаться к диску, как к физическому устройству.)
Уровень безопасности 2 Это уровень 1+:
Нельзя записывать данные напрямую в монтированные и немонтированные файловые системы.
Системное время за раз можно изменить не более чем на 1 секунду.
Уровень безопасности 3 Это уровень 2+
не допускает изменений правил пакетного фильтра.

Дополнения:
A. После переноса с одного сервака на другой учетных записей, за это отвечают(/etc/master.passwd и /etc/group.) записываем на новой машине полученные файлы в каталог /etc. И потом:
#pwd_mkdb master.passwd

B. Настройка работы с пакетами /etc/csh…
PKG_TMPDIR задает каталог, в который распаковываются временные файлы
# setenv PKG_TMPDIR /home/user/garbage
PACKAGEROOT предпочитаемый FTP для скачки пакета
PACKAGESITE Это полный путь к хранилищу (репозитарию) пакетов. Применяется, если требуется использовать пакеты определенного «выпуска» или в системе есть локальное хранилище пакетов.
PKGDIR Этот каталог определяет место для размещения копий пакетов, загруженных командой pkg_add -Kr, и позволяет организовать хранение загруженных пакетов.

C. Меняем стандартный шелл на самописный:)
1. В файлике /etc/shells добавляем строку с полным путем к нашему нестандартному шелу(для примера буду использовать /usr/bin/passwd).
2. Сохраняем
3. Создаем нового пользователя с помощью команды adduser
4. Во время создания когда спросят какой шелл хотим, смело выбирайте passwd(да, у нас появиться такой пунктик:))))
Можно конечно и поменять шелку у текущего, никто Вам этого не запрещает, в моем случае создавался новый пользователь.

D. Руссификация консольки UTF-8
1. Включить в файл /etc/login.conf описание класса пользователей с поддержкой русского языка:

Russian_utf8|Russian Users Accounts UTF8:\ :charset=UTF-8:\ :lang=ru_RU.UTF-8:\ :tc=default:

2. Выполнить команду cap_mkdb /etc/login.conf
3. Воспользоваться программой pw:

# pw user mod -L russian_utf8

Ttyv0 "/usr/libexec/getty Pc" cons25r on secure ttyv1 "/usr/libexec/getty Pc" cons25r on secure ttyv2 "/usr/libexec/getty Pc" cons25r on secure ttyv3 "/usr/libexec/getty Pc" cons25r on secure ttyv4 "/usr/libexec/getty Pc" cons25r on secure ttyv5 "/usr/libexec/getty Pc" cons25r on secure ttyv6 "/usr/libexec/getty Pc" cons25r on secure ttyv7 "/usr/libexec/getty Pc" cons25r on secure

5. В файле /etc/rc.conf закомментировать строки(если есть):

#font8x8="koi8-r-8x8" #font8x14="koi8-r-8x14" #font8x16="koi8-r-8x16" #keymap="ru.koi8-r.win"

6. Прописать переменные в используемом шелле /etc/csh.cshrc:

Setenv LANG ru_RU.UTF-8 setenv LC_CTYPE ru_RU.UTF-8 setenv LC_COLLATE POSIX setenv LC_ALL ru_RU.UTF-8

Можно конечно добавлять и каждому конкретному пользователю, но это дело по вкусу:)


| |

Как и в любой другой 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 поддерживает полезную возможность, использование так называемых классов пользователей (login class). При создании учетной записи пользователя, по-умолчанию, используется класс "default", берется он, из соответствующей секции файла /etc/login.conf. Кроме класса "drfault", файл содержит еще несколько предопределенных классов, например класс "russian" с соответствующими языковыми настройками, класс "root", "standart", "xuser", "news", "dialer", "siit", часть из них закомментирована, но при необходимости можете раскомментировать и использовать.

В секции класса прописаны начальные системные настройки для пользователя и это довольно важный момент . Приведу пример секции "default" из файла /etc/login.conf , в системе FreeBSD 7.1.

default:\
:passwd_format=md5:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
:path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin ~/bin:\
:nologin=/var/run/nologin:\
:cputime=unlimited:\
:datasize=unlimited:\
:stacksize=unlimited:\
:memorylocked=unlimited:\
:memoryuse=unlimited:\
:filesize=unlimited:\
:coredumpsize=unlimited:\
:openfiles=unlimited:\
:maxproc=unlimited:\
:sbsize=unlimited:\
:vmemoryuse=unlimited:\
:priority=0:\
:ignoretime@:\
:umask=022:

Вот описание некоторых опций класса пользователя:

passwd_format=md5:
Как можно догадаться по названию, это алгоритм шифрования паролей, вместо md5 , можно использовать, например DES
copyright=/etc/COPYRIGHT:
Файл копирайта, можно назначить какой угодно
welcome=/etc/motd:
Сообщение выводимое при логине пользователя в системе
setenv= ... ....
Устанавливает некоторые переменные окружения оболочки
path=.. ..
Пути к директориям с исполняемыми файлами, данная опция может быть переопределена из других файлов конфигурации
nologin=/var/run/nologin:
Опция, указывающая на местоположение файла nologin, запрещающего пользователю вход в систему
администратор может использовать этот файл, для временного запрета входа пользователей в систему
priority=0:
Начальный приоритет процессов по-умолчанию
umask=022:
Задает так называемую маску прав доступа к файлам и директориям, в данном случае, если пользователь создаст файл,
права доступа будут выставлены как 644 , при создании директории 755

Кроме перечисленного в классе можно задавать различные лимиты на использование пользователем системных ресурсов, процессорного времени, памяти, файлов и т.д.. Пройдитесь по файлу, он довольно прост для восприятия и интуитивно понятен, думаю вы без труда поймете как это работает. Список всех возможных опций и значений файла login.conf , можно посмотреть на страницах руководства man login.conf . Как было упомянуто выше, вы можете легко создать свой класс или использовать один из существующих, просто раскомментировав соответствующую секцию файла.

Имейте в виду, что после редактирования файла /etc/login.conf , вам необходимо пересобрать базу данных логинов /etc/login.conf.db , делается это так:

Vds-admin /# cap_mkdb /etc/login.conf

В операционной системе FreeBSD, информация из файла /etc/login.conf.db , используется при каждом входе пользователя в систему.

Изменение учетных записей пользователей в операционных системах FreeBSD

После создания учетной записи, может понадобится что-то изменить или исправить в начальных пользователя. Есть несколько мест, где это можно делать, например, домашняя директория пользователя содержит файлы, имена которых начинаются со знака "." (точка). В этих файлах как правило содержаться настройки пользовательской оболочки, переменные среды, настройки приложений. Основные настройки учетной записи можно изменить в файле /etc/passwd . Для безопасного редактирования используйте специальный редактор файла паролей vipw .

Vds-admin #/ vipw

Конечно можно использовать любой редактор для изменения файла паролей, но у vipw есть некоторое преимущество, при редактировании с помощью vipw , файл паролей блокируется, что-бы избежать изменения содержимого, по какой-либо другой причине. Файл паролей может редактировать только пользователь root. Типичная запись из файла паролей:

Drupal:*:1007:1007:drupal cms:/home/drupal:/bin/csh

В данном примере показана запись о пользователе drupal , идентификатор пользователя и группы: 1007 , полное имя: drupal cms , домашняя директория:/home/drupal , оболочка: /bin/csh . В общем-то данный файл не несет никакой критической информации, как видите во втором поле строки, вместо пароля, стоит символ "*", это говорит о том, что сам пароль, в зашифрованном виде, храниться в файле master.passwd .

Будьте осторожны, если надумаете менять идентификаторы пользователя или группы. В результате установки не правильных значений, пользователь может получить доступ туда, куда ему ходить не следует.)

Удаление учетных записей пользователей в операционных системах FreeBSD, программа rmuser

Удалить учетную запись пользователя, можно с помощью команды rmuser . Запущенная без параметров, команда rmuser, запросит имя пользователя, которого вы желаете удалить, покажет соответствующую запись из файла паролей и попросит подтверждение удаления, при положительном ответе, будет задан вопрос по поводу удаления домашней директории пользователя. Обычный вывод команды rmuser можно увидеть ниже.

Vds-admin /# rmuser Please enter one or more usernames: newuser Вводим имя учетной записи Matching password entry: newuser:*:1011:1011::0:0:User &:/home/newuser:/bin/csh Строка из /etc/passwd Is this the entry you wish to remove? y Удалить учетную запись Remove user"s home directory (/home/newuser)? y Удалить домашнюю директорию Removing user (newuser): files(1) mailspool home passwd.

Что-бы на все вопросы, программа получала утвердительный ответ, можно использовать ее с опцией -y . А что-бы увидеть подробный отчет о проделанной работе, используйте ключ -v . Так-же, при необходимости, можно воспользоваться возможностью команды rmuser , брать список пользователей из текстового файла, в нем просто перечисляются все учетные записи для удаления, по одной на строку, а команде rmuser передается опция -f и имя файла.

Vds-admin /root# rmuser -yv newuser Removing crontab for (newuser):. Removing at(1) jobs owned by (newuser): 0 removed. Removing IPC mechanisms. Terminating all processes owned by (newuser): -KILL signal sent to 0 processes. Removing files owned by (newuser) in /tmp: 0 removed. Removing files owned by (newuser) in /var/tmp: 0 removed. Removing mail spool(s) for (newuser): /var/mail/newuser. Removing user (newuser) (including home directory) from the system: Done.

Как видите, rmuser , подчищает все довольно капитально, удаляя записи из таблицы планировщика crontab , убивает процессы запущенные данным пользователем, чистит временные папки и т.д.

Управление паролями учетных записей в операционных системах FreeBSD, программа passwd

Для работы с паролями учетных записей предназначена специальная утилита, passwd . Кроме того можно работать с паролями и с помощью утилиты vipw , описанной выше. Обычный пользователь может управлять только своим паролем, пользователь root , может управлять любыми паролями в системе.
Смена пароля пользователем:

Vds-admin /home/user# passwd Запускаем passwd Changing local password for user Old Password: Вводим старый пароль New Password: Вводим новый пароль Retype New Password: Повторно вводим новый пароль

Смена пользователем root , пароля на учетной записи обычного пользователя:

Vds-admin /root# passwd user Запускаем passwd имя учетной записи в качестве параметра Changing local password for user New Password: Вводим новый пароль Retype New Password: Повторно вводим новый пароль

При запуске пользователем root , утилиты passwd без параметров, ему будет предложено сменить свой пароль

Не забывайте, пароль должен быть сложным! Это значит, чем из большего числа символов состоит пароль, тем лучше, использовать в паролях, желательно, как буквы в верхнем и нижнем регистрах, так и цифры и не буквенно-цифровые символы, такие как &^@)*_, и т.д. Конечно для обычных пользователей это не столь критично как для пользователя root, поэтому желательно создавать для них такие пароли, которые они в состоянии запомнить, не записывая на бумажку и не приклеивая ее на морду монитора..:)

Создание групп в операционной системе FreeBSD, файл /etc/group

При создании учетной записи пользователя, он добавляется в одну или более групп. По-умолчанию, для каждой учетной записи создается отдельная группа, с тем-же именем, что и учетная запись, в нее и добавляется, только что созданный, пользователь. Права группы, зависят от того как выставлены права для группы, на конкретных объектах (файлы, директории, и т.д.). Добавление пользователя к определенной группе, дает ему дополнительные права на объекты, на которые есть права у данной группы.

Записи о группах и пользователях в них входящих, хранятся в файле /etc/group , формат его весьма прост:

# $FreeBSD: src/etc/group,v 1.35 2007/06/11 18:36:39 ceri Exp $
#
wheel:*:0:root
daemon:*:1:
kmem:*:2:
sys:*:3:
tty:*:4:
operator:*:5:root
mail:*:6:
bin:*:7:
sshd:*:22:

Это укороченный вариант, но для ознакомления достаточно. В первом поле, имя группы, далее пароль, вместо него как правило стоит символ "*", далее идентификатор группы (GroupID ), и в последнем поле, через запятую, перечисляются пользователи, входящие в данную группу. Группы с идентификаторами меньше 100, это административные группы, обычные группы начинаются с ID 1001. Существуют так-же специальные группы, предназначенные для отображения групповых прав пользователей, через сеть, такие как nogroup (65533) и nobody (65534) .

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

Группа wheel , является привилегированной, как видите в нее входит пользователь root , добавляя в эту группу еще какого-то пользователя, вы тем самым даете ему права root , помните об этом.

Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС 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) .

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

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

Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС 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 с именем. В этом файле пользователь может только уменьшать предоставляемые ему ресурсы, но никак не увеличивать.
    В качестве разделителя полей в файле /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) .

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

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