FreeBSD - управление пользователями и учетными записями

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2024
Перейти к:навигация, поиск

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

FreeBSD - многопользовательская ОС, позволяет одновременную работу множества пользователей на одном компьютере

С каждой учетной записью в системе FreeBSD связана определенная идентификационная информация:

  • Имя пользователя
  • Пароль
  • ID пользователя (User ID, UID) - номер от 0 до 65535(может быть и более), используемый для однозначной идентификации пользователя в системе. Любая команда FreeBSD, позволяющая вам указывать имя пользователя, первым делом преобразует его к UID. Также можно создать несколько учетных записей с различными именами пользователей, но с одним UID
  • ID группы (Group ID, GID) - это номер от 0 до 65535, используемый для однозначной идентификации главной группы, к которой принадлежит пользователь.
  • Класс логина - это расширение к механизму групп для более гибкого управлениями пользователями.
  • Время изменения пароля - заставляет некоторых пользователей менять пароли по истечении определенного времени.
  • Время истечения действия учетной записи - ограничивает продолжительность жизни учетной записи
  • Полное имя пользователя
  • Домашний каталог
  • Оболочка пользователя - средство для взаимодействия с системой. Cписок доступных оболочек для пользователя можно посмотреть в файле /etc/shells, можно установить и добавить в этот файл.

В FreeBSD существует четыре файла, которые имеют отношение к БД учетных карточек. Все они находятся в директории /etc.

/etc/spwd.db  - основная БД, именно отсюда соответствующие программы берут нужные им данные. Данные хранятся в двоичном виде, то есть простым редактором там ничего не сделаешь.
/etc/master.passwd - та же БД, но в текстовом виде. Этот файл можно читать и изменять обычным текстовым редактором. Но, если вы будете его менять, потом нужно будет запустить утилиту - pwd_mkdb,
которая сделает изменения и в остальных трех файлах. /etc/pwd.db - то же, что и spwd.db, но без паролей (в поле password просто стоит знак *) /etc/passwd - то же, что и master.passwd, но без паролей.

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

Поэтому, выставили соответсвующие права на эти файлы:

% ls -l /etc/master.passwd 
-rw-------  1 root  wheel  2665  2 июн 02:29 /etc/master.passwd
% ls -l /etc/spwd.db
-rw-------  1 root  wheel  40960  2 июн 02:29 /etc/spwd.db
% ls -l /etc/passwd -rw-r--r-- 1 root wheel 2367 2 июн 02:29 /etc/passwd % ls -l /etc/pwd.db -rw-r--r-- 1 root wheel 40960 2 июн 02:29 /etc/pwd.db

spwd.db и pwd.db - предназначены для ускорения поиска.

Синтаксис файла /etc/master.passwd:

root:$1$PqEpTQss$.pzFDEXNZOZL6A9bY1X0: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

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

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

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 – оболочка, которую будет использовать пользователь.
Если Вы хотите запретить доступ пользователя к системе, замените его оболочку на /sbin/nologin. Данная программа более корректно, чем другие (/dev/null) обработает попытку входа пользователя.

% ls -l /sbin/nologin lrwxr-xr-x 1 root wheel 17 21 июн 00:14 /sbin/nologin -> /usr/sbin/nologin /sbin/nologin - это симлинк на /usr/sbin/nologin

Поле gecos - General information полностью может состоять из:

* Full Name - Имя Фамилия,
* Location - адрес (имеется в виду рабочее место),
* Office Phone - рабочий телефон,
* Home Phone - домашний телефон


При создании файла /etc/passwd из файла /etc/master.passwd поля class, change, expire удаляются, а пароль заменяется на *.
Поле логина (name) не может начинаться с символа (-), так же не советуется использовать прописные буквы в имени пользователя и разделять логин символом (.), что может вызвать проблемы при работе с почтой.

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

Существует 3 основных типа учетных записей:

  • суперпользователь (управление системой без ограничений)
  • системные пользователи (запускают сервисы)
  • учетные записи пользователей

Примеры системных пользователей:

operator, bind, www, ftp, ...
nobody - непривилегированный системный пользователь

Программы для работы с учетными записями:

adduser
rmuser
chpass
passwd
pw
vipw
id
finger
users
w
who
whoami
last
lastlogin
lastcomm
ac
sa
chfn
groups
chgrp
chkgrp

1) adduser - простая и интерактивная программа для добавления пользователей
Она создает записи в системных файлах passwd и group и копирует файлы настройки по умолчанию из /usr/share/skel.

2) rmuser - интерактивная программа для полного удаления пользователей.
Эта программа делает:

  • Удаление записи пользователя из crontab.
  • Удаляет задачи at, принадлежащие пользователю.
  • Уничтожает все процессы, принадлежащие пользователю.
  • Удаляет пользователя из локального файла паролей.
  • Удаляет домашний каталог пользователя (если он принадлежит пользователю).
  • Удаляет принадлежащую пользователю входящую почту из /var/mail.
  • Удаляет все файлы, принадлежащие пользователю, из каталогов с временными файлами, например /tmp.
  • Удаляет имя пользователя из всех групп, которым оно принадлежит, в /etc/group (если группа пользователя пустая - удаляет и ее).

3) chpass - изменяет информацию в БД пользователей
root - может изменять любую информацию.
обычные пользователи - могут изменять только shell, Full Name и персональную информацию. При выходе надо подтвердить сой пароль.
chfn, chsh, ypchpass, ypchfn и ypchsh - это ссылки на chpass.

4) passwd - это обычный способ изменения собственного пароля пользователя, или пароля другого пользователя root-ом.
5) pw - мощная утилита для работы с пользователями. Имеет много ключей, подходит для использования в скриптах.
6) vipw - утилита помогает быстро добавить пользователя или модифицировать его посредством файла /etc/master.passwd. После редактирования автоматически запускает pwd_mkdb, то есть создает 3 дополнительные файла - passwd, pwd.db, spwd.db.
7) id – отображение имени пользователя, UID и групп в которых он состоит с указанием их GID.
8) finger – отображает информацию о системном пользователе.
9) users – показывает список текущих пользователей.
10) who – показывает тех кто находится в системе.
11) whoami – показывает эффективный id пользователя соответствующий имени.
12) last – показывает когда пользователь пользовался терминалом.
13) lastlogin – показывает информацию о последнем использовании терминала.
14) lastcomm – показывает список последних выполняем команд пользователем.
15) ac – показывает время, которое пользователь находился в системе.
16) sa – показывает статистику по пользователям.
17) chfn – изменение пользовательских данных.
18) groups – показывает кто в каких группах состоит.
19) chgrp – изменение группы.
20) chkgrp – проверка синтаксиса файла групп.

Можно сделать что нас не будет видно в w, who, yawho, whowatch. Зато будет видно в процессах и в sockstat.

1. Логинимся как обычно.
2. $ /usr/bin/login -  логинимся снова.
3. CTRL+D - разлогиниваемся.
4. Остаемся в первоначальном шеле.

Ограничения пользователей

                      ---- дисковы квоты
                     /
2 вида ограничения --
                     \
                      ---- другие оганичения(CPU time, память, файлы и другие)


Классы учетных записей определяются в /etc/login.conf
Каждому пользователю присвоен класс (default по умолчанию), и каждому классу присвоен набор характеристик.
Характеристика определяется в виде пары

имя=значение       

Система не читает настройки в /etc/login.conf , она обращается к файлу БД /etc/login.conf.db для ускорения доступа к данным.
Для создания /etc/login.conf.db из /etc/login.conf, выполните следующую команду:

% cap_mkdb /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 	максимальный размер памяти, которую процесс может попросить "закрепить" (to lock) в физической памяти.
memoryuse 	size 	Максимальный размер памяти которую может использовать процесс
openfiles 	number 	Максимально количество файлов которые может открыть каждый процесс
sbsize 	size 	Максимально разрешённый размер сокетбуфера
vmemoryuse 	size 	Максимально разрешенный размер виртуальной памяти для каждого процесса
stacksize 	size 	Максимальный размер стэка каждой программы.

Обратить внимание на то, что:

  • Процессам, загружаемым при старте системы скриптами /etc/rc присваивается класс daemon.
  • Многие ограничения применяются к отдельным процессам, а не к пользователю вообще. Например, установка openfiles в 50 означает, что каждый процесс, запущенный пользователем, может открывать до 50 файлов. Таким образом, общее количество файлов, которые могут быть открыты пользователем, вычисляется как openfiles * maxproc. Это также применимо к потребляемой памяти.


Группы - просто список пользователей.
Имена групп связываются с ID групп в файле /etc/group. Группа идентифицируется по имени и GID.
Файл /etc/group может быть безопасно отредактирован вручную

Синтаксис файла /etc/group:

wheel:*:0:root
daemon:*:1:
kmem:*:2:
sys:*:3:
tty:*:4:
operator:*:5:root

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

1. group – название или имя группы.
2. password - зашифрованный пароль для группы.
3. gid - уникальный номер группы.
4. members - содержит членов группы, виде имён пользователей разделённых между собой.

В группе может находится не больше 200 пользователей. Максимальная длина строки в файле /etc/group 1024 символа.