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