Безопасность и пользователи


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

Создание учетной записи пользователя

В операционной системе FreeBSD используются стандартные для UNIX программы управления пользователями, такие как passwd(1), pw(8) и vipw(8). Кроме того, FreeBSD включает в себя удобную интерактивную программу adduser(8), которая позволяет добавлять новых пользователей. Разумеется, создать новую учетную запись может только пользователь root. Просто введите в командной строке команду adduser, и вы попадете в интерактивную оболочку.

На первом запуске программа adduser(8) попросит установить соответствующие значения по умолчанию, которые будут использоваться при создании всех новых учетных записей. Следуя за примером сеанса работы с программой, который приводится ниже, вы сможете определить значения по умолчанию для своей системы.

# adduser

Здесь username (1) — это имя учетной записи. Имена учетных записей в моей системе составляются из инициалов и фамилии пользователя. Вы можете выбирать имена для учетных записей, исходя из любой другой схемы. Full name (2) — это настоящее имя пользователя. Далее FreeBSD предложит выбрать числовой идентификатор пользователя (UID) (3). Нумерация идентификаторов пользователей в системе FreeBSD начинается с числа 1000, хотя вы можете выбрать любое число. Все идентификаторы, лежащие ниже 1000, зарезервированы для нужд системы. В этом месте я рекомендую просто нажать клавишу Enter, чтобы выбрать первый незанятый UID.

Группа пользователя по умолчанию (1) — это очень важно, не забывайте, что права доступа в UNIX основаны на принадлежности владельцу и группе. По умолчанию FreeBSD создает для каждого пользователя отдельную группу, что наиболее предпочтительно для большинства систем. Во всех толстых книгах по системному администрированию предлагается несколько схем группировки — вы можете использовать ту из них, которая окажется наиболее близка к вашим потребностям. Помимо группы по умолчанию, пользователя можно добавить и в другие группы (2), если в этом есть необходимость.

Login class (класс доступа) (3) определяет, к каким ресурсам имеет доступ создаваемый пользователь. Подробнее о классах доступа мы поговорим немного ниже, в этом же разделе.

Shell (оболочка) (4) — это интерпретатор команд. Хотя в системе по умолчанию выбирается интерпретатор /bin/sh, я предпочитаю для начинающих пользователей выбирать интерпретатор команд tcsh.* Если у вас имеется глубокая привязанность к другому интерпретатору — выбирайте его. Опытные пользователи могут самостоятельно изменить выбор интерпретатора команд.*

Home directory (домашний каталог) (5) — это каталог на диске, где будут находиться файлы пользователя. Владельцами этого каталога будут назначены сам пользователь и группа по умолчанию.

Использование паролей дает определенную степень гибкости. Если все ваши пользователи знают, что такое SSH и общедоступные ключи, возможно, вам удастся обойтись без паролей. А пока большинство из нас предпочитают использовать пароли (1).

Use an empty password (использовать пустой пароль) (2) — эта возможность предусмотрена на тот случай, если необходимо, чтобы пользователь сам назначил себе пароль. Любому, кто попытается подключиться к системе с указанной учетной записью, будет предложено сначала установить пароль. Это делает идею оставить пароль пустым похожей на мысль заполнить дирижабль водородом, а потом зажечь спичку внутри него.

С другой стороны, отличным выбором будет назначение случайного пароля (random password) (3) для новой учетной записи. Генератор случайных паролей в системе FreeBSD неплохо подходит для повседневного использования. Случайные пароли очень сложны для запоминания, и это лишний раз подталкивает пользователей поскорее изменить его.

Если учетная запись заблокирована (locked) (4), никто не сможет использовать ее для входа в систему. Вообще говоря — это неэффективно.

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

Настройка adduser: /etc/adduser.conf

Процедура создания новых учетных записей в некоторых версиях UNIX сопряжена с необходимостью вручную редактировать файл /etc/passwd, перестраивать базу паролей, редактировать файл /etc/group, создавать домашний каталог, устанавливать права доступа к этому каталогу, устанавливать скрытые файлы (имена которых начинаются с символа «точка» (.)) и т. д. Все это вынуждает вас выработать свою собственную процедуру настройки — если все параметры устанавливаются вручную, вы легко можете управлять своими локальными учетными записями. adduser(8) сама выполняет большую часть рутинных операций и использует некоторые значения по умолчанию. Для серверов с различными требованиями вы можете определить различные значения по умолчанию в файле /etc/adduser.conf, что позволит обеспечить соответствие предъявляемым требованиям и одновременно сохранить высокий уровень автоматизации.

Чтобы создать свой первый файл adduser.conf, нужно запустить команду adduser -C и ответить на ряд вопросов.

Login group (1) — это группа пользователя по умолчанию. Пустое значение означает, что в качестве группы по умолчанию пользователю будет назначаться его собственная группа (принято в FreeBSD по умолчанию).

Существует возможность указать дополнительные группы (2), к которым по умолчанию будет принадлежать новая учетная запись, а также класс доступа (3).

Укажите командный интерпретатор по умолчанию (4) для своих пользователей.

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

В заключение определяется порядок установки пароля (6) для нового пользователя.

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

Таблица 7.1. Полезные параметры настройки для файла adduser.conf

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

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

Изменение учетных записей: passwd(1), chpass(1) и другие

Управление пользователями заключается не только в создании и удалении учетных записей. Время от времени эти учетные записи необходимо изменять. Система FreeBSD включает в себя некоторые инструменты, предназначенные для редактирования учетных записей, самыми простыми из которых являются passwd(1), chpass(1), vipw(8) и pw(8). Все они работают с тесно взаимосвязанными файлами /etc/master.passwd, /etc/passwd, /etc/spwd.db и /etc/pwd.db. Для начала мы рассмотрим эти файлы, а затем перейдем к обзору указанных выше инструментов.

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

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

Всякий раз, когда какая-либо программа управления пользователями изменяет информацию об учетной записи, хранящейся в файле /etc/master.passwd, FreeBSD запускает pwd_mkdb(8) для обновления трех других файлов. Например, все три программы, passwd(1), chpass(1) и vipw(8), позволяют вносить изменения в основной файл с паролями и все три программы вызывают pwd_mkdb(8) для обновления информации во взаимосвязанных файлах.

Изменение пароля

Для изменения пароля используется программа passwd(1). Пользователи могут изменять свои собственные пароли, а пользователь root имеет право изменять пароли любых пользователей. Чтобы изменить свой собственный пароль, достаточно просто ввести в строке приглашения к вводу команду passwd.

# passwd
Changing local password for mwlucas
Old Password:
New Password:
Retype New Password:

Если вы изменяете свой собственный пароль, passwd(1) сначала потребует ввести текущий пароль. Сделано это для того, чтобы никто другой не смог изменить пароль без ведома самого пользователя. Вообще, когда вы покидаете терминал, было бы желательно всегда завершать сеанс работы с системой, но даже если вы этого не делаете, эта простая проверка, которую проводит passwd(1), обезопасит вас от проделок шутников. После этого нужно будет дважды ввести новый пароль и все. Если вы обладаете привилегиями суперпользователя и вам требуется изменить пароль другого пользователя, просто передайте программе passwd имя этого пользователя в виде аргумента.

# passwd mwlucas
Changing local password for mwlucas
New Password:
Retype New Password:

Обратите внимание: пользователю root необязательно знать старый пароль другого пользователя — пользователь root может изменить учетную информацию любого пользователя в системе, как ему заблагорассудится.

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

Такие инструменты управления пользователями, как chpass и vipw (как и многие другие инструменты администрирования системы), запускают текстовый редактор, когда возникает необходимость внести изменения. Вообще говоря, эти программы определяют предпочтительную программу текстового редактора, исходя из содержимого переменной окружения $EDITOR. С помощью этой переменной можно назначить редактором по умолчанию vi, Emacs или какой-нибудь другой имеющийся редактор. Я рекомендую использовать Vigor (/usr/ports/editors/vigor), клон редактора vi(1) с анимированным помощником в виде скрепки, благодаря которому пользователи, привыкшие к Microsoft Office, будут чувствовать себя увереннее.

Комментарии запрещены.