Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Как добавить юзера?

Ответ на этот вопрос не такой простой, как может показаться. Все зависит от того - какого юзера вы хотите зарегистрировать. (О том, какие типы юзеров могут встретиться смотри - "Для чего используется учетная карточка" ).

Заметьте, что, для того, чтобы пустить в свою систему реального юзера, надо не только добавить новую учетную карточку для него. Еще надо создать ему домашнюю директорию и, желательно, положить туда некоторые стартовые файлы (типа config.sys и autoexec.bat в DOS'е). При этом надо правильно установить права нового юзера на эти файлы.

Для того, чтобы не делать эту работу вручную, существует специальная утилита (см. ниже). Но, если вам нужно зарегистрировать псевдо-юзера или "почтового юзера", она не очень подходит. В этом случае лучше воспользоваться более примитивными средствами.

Итак. Программы для регистрации (и не только) нового пользователя.

pwd_mkdb

Собственно, эта утилита только преобразует файл master.passwd в три остальных файла (см. "Где хранятся учетные карточки").

Вы можете любым текстовым редактором добавить строчку в master.passwd, взяв за образец любую из тех строчек, которые там уже есть (желательно, перед этим внимательно прочитать man 5 passwd). Если, после этого запустить команду
pwd_mkdb -p /etc/master.passwd
то она сделает соответствующие изменения в spwd.db, pwd.db, passwd.

Не забудьте, что пароль в учетной карточке хранится в зашифрованном виде. Поэтому, при составлении записи, это поле учетной карточки лучше оставить пустым, а потом занести пароль утилитой, которая специально для этого предназначена:
passwd <имя юзера>

Конечно, это самый сложный способ, но... Если вы когда-нибудь возьметесь написать свою программу для регистрации, то она должна будет просто сформировать правильную строчку для файла master.passwd, занести ее в этот файл, а потом просто вызвать pwd_mkdb. Кстати, остальные программы, о которых дальше идет речь, именно так и делают.

vipw

Эта программа слегка :-) автоматизирует процесс описанный выше. Она сама запускает текстовый редактор, а, по выходу из редактора, pwd_mkdb.

Облегчение состоит в том, что вам не надо помнить - какой файл вы редактируете и как правильно вызвать pwd_mkdb.

Запись в master.passwd вам все равно придется составить самостоятельно. При этом не забудьте, что Name и userID должны быть уникальными для каждого юзера.

Важное замечание по поводу текстового редактора. Программа vipw сама редактором не является. Она запускает текстовый редактор, который задан переменной окружения EDITOR, а если таковой не найдет, то редактор vi. Причем, обычно, при установке FreeBSD в стартовых файлах для root эта переменная устанавливается, но это тот же vi.

Дело в том, что работать с этим редактором без подготовки достаточно сложно. Поэтому, установите переменную EDITOR, выбрав свой любимый редактор. Если любимого редактора у вас пока нет, можно воспользоваться редактором /bin/ee.

adduser

Это самая "продвинутая" программа для добавления нового юзера. Она задает вопросы касающиеся нового юзера, сама проверяет имя и user ID на уникальность (причем, для user ID она сама предложит подходящее значение), создает домашнюю директорию для юзера и копирует туда заготовки настроечных файлов, и даже может послать приветственное письмо вновь зарегистрированному юзеру. Естественно, она же делает запись в БД учетных карточек.

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

Например, вам нужно зарегистрировать "почтового юзера". Для такого юзера не нужна домашняя директория (а тем более заготовки стартовых файлов) и Shell у этого юзера должен быть нестандартный. Так вот - заставить эту программу не делать домашнюю директорию очень трудно (если вообще возможно). Кроме того, она не даст вам указать в качестве Shell произвольную программу.

Поэтому, в этой ситуации, вам придется либо подчищать за ней все лишнее, что она сделает, либо обратиться к другим способам создания учетной карточки.

pw useradd

Возможно, вам покажется более удобной утилита pw. Эта программа, по замыслу авторов, должна быть универсальной утилитой для администратора в вопросах создания/изменения/удаления юзеров и групп. Поэтому, для данной задачи (регистрации нового юзера) ее надо запускать в виде:
pw useradd .....

В отличии от adduser эта утилита очень не разговорчивая, то есть, она не задает никаких вопросов и все нужные сведения о новом юзере ей нужно сказать в командной строке с помощью соответствующих ключей.

Но, с другой стороны она имеет и ряд достоинств:

  • обычно, достаточно ей указать только имя нового юзера, все остальное она "сочинит" сама. Например:
    pw useradd vasia
    (программа сама подберет подходящий userID, и заполнит поля group, Home dir, Shell и т.п., взяв их из своего конфигурационного файла)
  • все данные, подставляемые "по умолчанию", можно легко поменять, запустив эту же программу в виде
    pw useradd -D ...
    или отредактировав напрямую конфигурационный файл /etc/pw.conf
    (если у вас в /etc такого файла нет, то просто наберите команду pw useradd -D и он сам создастся).
  • при этом можно иметь несколько различных конфигурационных файлов, для разных типов юзеров, и явно указывать в команде - какие "умолчания" использовать для создания данного юзера. Например, у вас есть юзеры трех различных типов (отличающися своими group, Home dir, Shell и т.п.). Сделайте три разных конфигурационных файла (просто "растиражируйте" /etc/pw.conf и подправьте в каждом то, что нужно.) Теперь, чтобы создать юзера с "умолчаниями" из файла /etc/pw1.conf, наберите команду
    pw useradd vasia -C/etc/pw1.conf

Подробнее о всех параметрах (ключах) этой программы можно посмотреть в соответствующем man'уале (man pw), краткий список ключей можно "спросить" у самой программы, командой
pw useradd help
(но man pw все равно лучше прочитать, хотя бы раз :-)

Здесь я хочу только обратить внимание на ключь -m. Дело в том, что pw useradd "по умолчанию" делает только запись в учетной карточке. А с этим ключем
pw useradd vasia -m
она, также, создаст домашнюю директорию для юзера и скопирует туда соответствующие стартовые и настроечные файлы.

Еще что-нибудь

Если вам приходится часто выполнять какую-нибудь нестандартную операцию регистрации нового пользователя (например, "почтового юзера" или фиктивного юзера для запуска коммуникационной программы), можно написать свою программу, которая будет выполнять только поставленную задачу, но, зато, не сделает ничего лишнего и не будет приставать с лишними вопросами как adduser.

Написание такой программы - не такая уж сложная задача, как может показаться на первый взгляд.

Ниже приводится пример программы, написанной на языке "интерпретатора комманд" sh, для регистрации "почтового юзера". Естественно, это не столько рабочая программа, сколько пример, который должен вдохновить вас на самостоятельное творчество. :-)

Некоторые пояснения. Программа использует системную утилиту id, которая выводит некоторую информацию о заданном юзере (причем, в качестве аргумента этой утилиты может использоваться как name юзера, так и его user ID). В данном случае она используется только для проверки - зарегистрирован ли уже такой юзер в системе.
Форма - id ... >/dev/null 2>&1
используется для того, чтобы подавить весь вывод этой утилиты, который, при использовании ее внутри программы, будет совершенно лишним.





#!/bin/sh



# Эти переменные вынесены в начало, чтобы их можно было легко поменять

# при необходимости

shell=/bin/date    # имя Shell для регистртруемого юзера

group=2000         # group ID для регистрируемого юзера

uid=2000           # user ID, начиная с которого программа ищет

                   # ближайший свободный



# найти ближайший не занятый user ID

while (true) ; do

if (id $uid >/dev/null 2>&1)

  then uid=$(($uid+1))

  else break

fi

done



# Запросить Name для нового юзера и проверить его на уникальность,

# если юзер с таким Name уже зарегистрирован в системе, сообщить

# об этом и повторить вопрос

while (true) ; do

read -p 'User Name: ' name

if (id $name >/dev/null 2>&1) 

  then echo 'user "'$name'" already exists'

  else break

fi

done



# Запросить "реальное имя" юзера (чтобы записать его в General information)

read -p 'Real name of "'$name'" : ' rname



# Сформировать учетную карточку и вписать ее в master.passwd

echo $name'::'$uid':'$group'::0:0:Postbox for '$rname'::'$shell >> /etc/master.passwd



# Запустить pwd_mkdb, чтобы сделать изменения во всех файлах

# БД учетных карточек

pwd_mkdb -p /etc/master.passwd



# Запросить секретный пароль для нового юзера

passwd $name



# Если необходимы еще какие-то действия - создать директорию или внести

# изменения в другие файлы, то это можно сделать далее в той же программе.

# Но, в данном случае, больше ничего делать не нужно.

Иван Паскаль pascal@tsu.ru

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...