Создание пользователя freebsd. FreeBSD: Управление учетными записями пользователей
Что-бы упростить процесс администрирования системы и сделать его более гибким, 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 системах действует определенная иерархия пользователей. Следует понять, что в системе существует главный пользователь обладающий всеми правами — 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
Так же повторный набор этой команды уже из режима пользователя приведет к выходу из системы.
На этом процесс добавления пользователя закончен.
Добавить пользователя или группу можно несколькими способами (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) – создание, удаление, изменение, отображение пользователей и групп;