Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX. Так как FreeBSD является многопользовательской ОС и принадлежит к семейству ОС относящихся к общему названию UNIX, поэтому умение грамотно управлять пользователями позволит избежать различных неприятностей.
Учётные записи пользователей и групп хранятся в двух файлах:
В 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
дающее общую информацию о пользователи, содержит в себе следующие поля, разделённые запятой:
Поле 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
является именем группы, которое определяет доступ пользователям к файлам, являющимися членами данной группы. С полем 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
может принимать следующие значения:
b - байты
k - килобайты
m - мегабайты
g - гигабайты
t - терабайты
Возможно объединение значений с указанием соответствующих суффикосв: 1m30k
y - год
w - неделя
d - день
h - час
m - минуты
s - секунды
Возможно объединение значений с указанием соответствующих суффиксов: 2h30m
Ограничение ресурсов:
|
Ресурсы могут ограничиваться как мягкими, так и жёсткими
ограничениями, разница между ними состоит в том, что жёсткие
ограничения пользователь не сможет увеличивать, а мягкие сможет, но не
больше чем жёсткое значение. Для обозначения мягких и жёстких
ограничений используются специальные суффиксы -max
и -cur
. Пр: filesize-max
Окружение пользователя:
|
|
В опциях 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 системах действует определенная иерархия пользователей. Следует понять, что в системе существует главный пользователь обладающий всеми правами — root. Остальные пользователи так или иначе ограничены в своих правах. Отсюда существует правило — работать в системе под ограниченным пользователем, и только для выполнения административных задач переключаться в суперпользователя root. У каждого пользователя в системе существует свой домашний каталог, в котором хранятся все личные настройки в виде конфигурационных файлов, по умолчанию этот каталог располагается в /usr/home, на который ведет символическая ссылка /home. Грубо говоря, для того чтобы установить ПО, управлять системными процессами, вносить изменения в системные файлы, настраивать сеть, монтировать диски, нужно будет переключаться в суперпользователя root. А для обычной повседневной деятельности (работа с документами, интернет, мультимедия и т.д.) достаточно простого пользователя. Если игнорировать это правило и использовать аккаунт root для повседневной деятельности, на порядок повышается уязвимость системы, так как все процессы будут запущены с правами суперпользователя, к примеру — браузер запущенный таким образом — грубейшее игнорирование правил безопасности системы. Злоумышленник, используя какую-либо уязвимость браузера, теоретически сможет получить полный доступ к управлению системой. К примеру, такой неправильный подход к безопасности — как работа интернет браузера с полными правами, реализован в операционных системах семейства Windows (собственно, там фактически нет нормального разделения прав пользователей), что приводит к простому механизму поражения системы, при помощи простого захода на зараженный сайт. Чтобы свести подобные вероятности к минимуму следует работать в системе в качестве пользователя и только при необходимости переключаться в суперпользователя root.
Каждый пользователь в системе может принадлежать к одной или нескольким группам. Членство в какой то определенной группе дает пользователю дополнительно те или иные права. К примеру, чтобы наш пользователь смог переключаться в суперпользователя, его следует поместить в группу wheel, это группа системных администраторов системы, к которой принадлежит root. В системе каждый пользователь (и группа) имеет свой идентификационный номер, пользователь root и группа wheel имеют при этом нулевые идентификаторы. В системе так же имеется масса пользователей не имеющих возможности подключиться в систему и не имеющие пароля авторизации, для системных нужд. Пример — пользователь ftp, от его имени выполняется штатный ftp сервер. Таких пользователей несколько.
Итак, наша задача создать пользователя — системного администратора, с авторизацией по паролю и возможностью входа в систему. Для этого входим в систему как суперпользователь root и набираем команду:
# adduser
После выполнения на дисплее появится следующий диалог для ввода данных. Запросы идут друг за другом, следует вводить необходимые данные и нажимать «enter»:
Username: alex
— набираем имя пользователя (в данном случае «alex»), которое будет использоваться для входа в систему
Full name: Alexey
— набираем полное имя, это имя будет фигурировать в личном профиле пользователя, его можно пропустить просто нажав «enter»
Uid (Leave empty for default):
— в этой строке можно принудительно указать идентификационный номер пользователя, в нашем случае мы просто нажимаем «enter», представляя системе самой присвоить свободный идентификатор
Login group :
wheel
— в эту строку следует ввести группу к которой будет принадлежать пользователь в системе, по умолчанию имя группы аналогично имени пользователя, такая группа не будет обладать никакими дополнительными правами, а наша задача состоит в том, чтобы создать системного администратора, поэтому мы вводим имя группы системных администраторов «wheel» и нажимаем «enter»
Login group is wheel. Invite alex into other groups? :
— данный запрос мы тоже пропускаем, это запрос о том, стоит ли сделать пользователя членом еще каких либо групп в системе, в нашем случае достаточно лишь одной группы «wheel», которую мы уже указали выше
Login class :
— этот запрос мы тоже пропускаем, изменение этого параметра мы будем рассматривать ниже в статье о русификации, фактически в этой строке можно сразу задать класс пользователя «russian» для определения локали — раскладки и языка пользователя
Shell (sh csh tcsh nologin) : — этот запрос означает выбор командного процессора консоли, который собственно интерпритирует команды набранные на клавиатуре, по умолчанию командный процессор для пользователя — sh, поэтому пропускаем этот параметр нажимая «enter», изменение командного процессора мы рассмотрим в дальнейших статьях на сайте
Home directory :
— в этой строке можно принудительно указать домашний каталог пользователя, в данном случае нас устраивает это размещение, поэтому снова нажимаем «enter»
Home directory permissions (Leave empty for default):
— в этой строке можно принудительно задать права доступа для директории пользователя, в нашем случае так же оставляем все «по умолчанию» нажимая «enter»
Use password-based authentication? :
— использовать ли пароль для авторизации пользователя в системе, по умолчанию стоит «yes» (да), если ответить «no» (нет) то штатным образом в систему войти мы не сможем, поэтому нажимаем «enter» тем самым отвечая «да»
Use an empty password? (yes/no) :
— оставить ли пустой пароль для авторизации пользователя, в данном случае если ответить «да», то в систему возможно будет войти без пароля, что является неприемлимым, поэтому нажимаем «enter» тем самым отвечая «нет», т. к. по умолчанию указан ответ «no» (нет)
Use a random password? (yes/no) :
— присвоить ли пользователю случайный пароль, в нашем случае тоже пропускаем этот вопрос нажимая «enter» и тем самым отвечая «no» (нет), т.к. пароль мы зададим самостоятельно
Enter password:
— в данной строке следует ввести пароль пользователя, который будет ему присвоен, при этом ввод символов никак не отобразится в строке
Enter password again:
— следует повторить ввод пароля
Lock out the account after creation? :
— на этот вопрос следует так же ответить «no» (нет), т.к. вопрос гласит «Заблокировать ли аккаунт после создания?», нажимаем «enter»
После чего на экране появится профиль пользователя с запросом:
Username: alex
Password: *****
Full Name: Alexey
Uid: 1001
Class:
Groups: wheel
Home: /home/alex
Home Mode:
Shell: /bin/sh
Locked: no
OK? (yes/no):
На вопрос следует набрать «yes» (да) и нажать «enter», если набрать «no» (нет), то пользователь создан не будет. Итак набираем «yes» и нажимаем «enter»:
OK? (yes/no): yes
adduser: INFO: Successfully added (alex) to the user database.
На дисплее появится следующий запрос:
Add another user? (yes/no):
no
— на него уже следует ответить отрицательно, он гласит «Добавить ли еще одного пользователя?».
Goodbye!
Теперь в систему можно будет войти набрав логин — «alex» и пароль указанный в процессе создания пользователя. Для того, чтобы пользователю состоящему в группе wheel переключиться в режим суперпользователя root, следует набрать команду:
$ su
Password:
И после набора пароля суперпользователя root, аккаунт переключится. Возврат из режима суперпользователя в данном случае выполняется по команде:
# exit
Так же повторный набор этой команды уже из режима пользователя приведет к выходу из системы.
На этом процесс добавления пользователя закончен.
Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС 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
– отсутствие ограничений
Ограничение ресурсов:
|
  Ресурсы могут ограничиваться как мягкими, так и жёсткими ограничениями, разница между ними состоит в том, что жёсткие ограничения пользователь не сможет увеличивать, а мягкие сможет, но не больше чем жёсткое значение. Для обозначения мягких и жёстких ограничений используются специальные суффиксы –max
и –cur
. Пр: filesize-max
Окружение пользователя:
|
|
В опциях 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)
.
  Задание классов для системных пользователей является очень хорошим средством индивидуального ограничения пользователя, но используйте это средство осознанно и с осторожностью.
Для управления пользователями и группами будут полезны следующие команды:
Добавить пользователя или группу можно несколькими способами (sysinstall, adduser, pw …). Рассмотрим самые популярные программы для управления пользователями в ОС freeBSD .
1. Добавление пользователей используя adduser
И так рассмотрим указанную выше программу adduser (за слешами будет // мой комментарий) :
#adduser
Username: test // указываем имя будующего пользователя
Full name: Test User // полное имя
Uid (Leave empty for default): // юзер АйДи (индификационный номер в системе) желательно оставить пстым, система сама назначит
Login group : // вносим пользователя в его группу. оставляем пустым
Login group is test. Invite test into other groups? : wheel // можно добавить пользователя в другую группу если есть необходимость
Login class : // оставим пустым
Shell (sh csh tcsh zsh nologin) : tcsh // выбираем ‘оболочку’ командной строки, лучше вписать tcsh, sh не удобен IMHO
Home directory : // домашняя папка можно разместить где удобно но лучше оставить по дефолту
Use password-based authentication? : // оставляем пустым
Use an empty password? (yes/no) : // пользователь с пустым паролем это не безопасно, выбор по умолчанию no
Use a random password? (yes/no) : // система может генерировать случайный пароль по умолчанию no
Enter password: // если вы отвергли 2 верхних пункта вам предложено ввести пароль самостоятельно
Enter password again: // повторите ввод пароля
Lock out the account after creation? : // заблокировать учетную запись пользователя после создания
Username: test
Password: ****
Full Name: Test User
Uid: 1001
Class:
Groups: test wheel
Home: /home/test
Shell: /usr/local/bin/tcsh
Locked: no
OK? (yes/no): yes // если вышеуказанное совпадает с тем что вы хотели вводите yes
adduser: INFO: Successfully added (test) to the user database.
Add another user? (yes/no): no // предложение добавить еще пользователя, ненасытный, ему только пользователей подавай 🙂
Goodbye! // и вам не хворать
#
2. Удаление пользователей используя rmuser
И так добавить — добавили. Теперь нужно знать как удалить 🙂 Помните «ломать — не строить!» Удалить куда проще чем добавить пользователя и назначить ему нужные настройки и права.
Удаляем следующей программой: rmuser
Что может эта программа:
- Удаление записи пользователя из crontab (если она присутствует).
- Удаляет задачи at , принадлежащие пользователю.
- Уничтожает все процессы, принадлежащие пользователю.
- Удаляет пользователя из локального файла паролей.
- Удаляет домашний каталог пользователя (если он принадлежит пользователю).
- Удаляет принадлежащую пользователю входящую почту из /var/mail .
- Удаляет все файлы, принадлежащие пользователю, из каталогов с временными файлами, например /tmp .
- Наконец, удаляет имя пользователя из всех групп, которым оно принадлежит, в /etc/group.
# rmuser test // удаляем пользователя test
Matching password entry:
test:*:1001:1001::0:0:Test User:/home/test:/usr/local/bin/tcsh
Is this the entry you wish to remove? y // перестраховка, того ли юзера вы собрались удалять
Remove user’s home directory (/home/test)? y // удалить пользовательскую папку со всем содержимым?
Updating password file, updating databases, done.
Updating group file: trusted (removing group test — personal group is empty) done.
Removing user’s incoming mail file /var/mail/test: done.
Removing files belonging to test from /tmp: done.
Removing files belonging to test from /var/tmp: done.
Removing files belonging to test from /var/tmp/vi.recover: done. // всё! пользователь ушел в мир иной и все папки за ним подчищены .
#
Если желаете что бы программа не грузила Вас всеми этими вопросами — используйте параметр -y (rmuser -y ) фактически мы соглашаемся на все условия.
3. Смена пароля программами passwd и chpass
Как изменить пароль у пользователя freeBSD? — спросите Вы. Элементарно! — ответит вам любой читавший дальше =).
Программки для смены пароля: passwd
и chpass
.
passwd
— это обычный способ изменения собственного пароля пользователя, или пароля другого пользователя суперпользователем.
Предствим на минутку что Вы простой юзер с именем test и хотите себе поменять пароль:
% passwd
Old password: // вводим старый пароль
New password: //вводим новый пароль
Retype new password: // повторяем новый пароль
passwd: updating the database…
passwd: done // готово пароль изменен
Теперь представим что Вы суперпользователь и хотите изменить пароль простому смертному юзеру:
# passwd test // обязательно укажите имя пользователя иначе измените свой пароль
Changing local password for test.
New password: // новый пароль (как видите старый пароль знать не нужно — преимущества суперюзера)
Retype new password: //повторим пароль
passwd: updating the database…
passwd: done // готово, хехе
Рассмотрим теперь более функциональную примочку — chpass
.
chpass
— может не только менять пароль пользователя, а и остальные его данные.
Только системные администраторы с правами суперпользователя могут изменять информацию и пароли других пользователей с помощью программы chpass
. Простые пользователи тоже могут использовать эту программу, но изменять позволено лишь небольшую часть этой информации, и только для своей учетной записи.
И так работа программы chpass
для суперюзера:
#Changing user database information for test .
Login: test
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change :
Expire :
Class:
Home directory: /home/test
Shell: /usr/local/bin/tcsh
Full Name: Test User
Office Location:
Office Phone:
Home Phone:
Other information:
4. Управление пользователями и группами используя pw
Ну и самое вкусное в конце. pw
— это утилита командной строки для создания, удаления, модифицирования и отображения пользователей и групп. Она функционирует как внешний интерфейс к системным файлам пользователей и групп. У pw
очень мощный набор параметров командной строки, что делает это программу подходящей для использования в shell скриптах, но новым пользователям она может показаться более сложной, чем другие представленные здесь команды.
Добавим юзера test с помощью утилиты pw
:
# pw useradd test -s /bin/tcsh -c «Test user» -m -b /home -e 03-07-2011 -p 02-07-2011
Пояснение использованных ключей:
-s
– указывает какой терминал будет использоваться, поле shell
-с
– комментарии к созданному пользователю, поле gecos
-e
– время жизни аккуанта, поле expire. Формат поля аналогичен опции ‘-p’
-p
– время жизни пароля, поле change. Формат задания даты или времени таков:
dd-mm-yy, где dd – день, mm – месяц, yy – год. Или используется следующий
формат: +0mhdwoy, где m – минуты, h – часы, d – дни, w – недели, o – месяц, y — год
-m
– заставляет создать домашний каталог пользователя и скопировать в него стандартные файлы
и каталога /usr/share/skel
-b
– базовая директория в которой будет находится домашний каталог пользователя, поле home_dir
-L
– задаёт класс для пользователя из файла login.conf, поле class
Что бы создать группу noname и переместить в нее пользователя test используем следующую комбинацию:
# pw groupadd noname -M test
Что бы добавить пользователя test в уже существующую группу wheel используем:
# pw usermod test -g wheel
Расписывать все возможности pw можно долго. Основные возможности перед Вамм.
5. Перечень всех известных программ и утилит о управлению учетными записями и группами пользователей
Ну и в завершении перечислю все возможные приложения и утилиты для мониторинга/изменения/добавления пользователей и групп:
pw(8) – создание, удаление, изменение, отображение пользователей и групп;
Что-бы упростить процесс администрирования системы и сделать его более гибким, 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 , помните об этом.