Добавление пользователей в Windows Server: полная инструкция

добавление пользователей в Windows Server

Добавление пользователей в Windows Server выполняется через оснастку Active Directory Users and Computers, PowerShell-командлеты или локальную консоль управления компьютером. Процесс занимает пару минут, но если не настроить права правильно, потом будете разгребать проблемы неделями (проверено на собственном опыте, к сожалению).

Локальные пользователи vs доменные: в чём разница

Тут такое дело. Есть два типа пользователей на сервере. Локальные живут только на одной машине. Доменные работают через Active Directory и видны всей сети.

Если честно, большинство путают эти понятия на старте. Мой коллега Андрей, когда только пришёл в компанию, создал 40 локальных учёток на каждом сервере вместо того, чтобы сделать одну доменную. На его Dell PowerEdge R740 потом пришлось всё переделывать. Грубо говоря, это как заводить отдельный паспорт для каждого здания в городе.

Когда использовать локальные учётки? Редко. Standalone-серверы без домена. Тестовые стенды. Всё.

А для продакшена вам нужен домен Active Directory и доменные учётки. Это не обсуждается.

Добавление локального пользователя через GUI

Самый простой способ, знаете что, просто открыть консоль.

  1. Нажмите Win+R, введите compmgmt.msc
  2. Раскройте «Локальные пользователи и группы»
  3. Правой кнопкой по папке «Пользователи»
  4. Выберите «Новый пользователь»
  5. Заполните поля: имя пользователя, полное имя, пароль
  6. Снимите галочку «Требовать смену пароля при следующем входе» если это сервисная учётка

Вот в чём прикол: галочка «Срок действия пароля не ограничен» нужна только для сервисных аккаунтов. Для обычных пользователей это дыра в безопасности. Не делайте так.

Создание пользователей через PowerShell

Короче, PowerShell быстрее. Особенно когда пользователей много.

Для локального пользователя:

# Создаём локального пользователя на сервере
# Пароль задаём как SecureString, иначе не сработает
$Password = ConvertTo-SecureString "P@ssw0rd123!" -AsPlainText -Force
New-LocalUser -Name "ivanov" -Password $Password -FullName "Иванов Пётр" -Description "Бухгалтерия"

# Добавляем в группу, без этого прав не будет
Add-LocalGroupMember -Group "Remote Desktop Users" -Member "ivanov"

Для доменного пользователя через Active Directory:

# Импортируем модуль AD, без него командлеты не найдутся
Import-Module ActiveDirectory

# Создаём юзера в нужном OU
# OU указываем полный путь, тут часто ошибаются
New-ADUser -Name "Иванов Пётр" `
    -SamAccountName "pivanov" `
    -UserPrincipalName "[email protected]" `
    -Path "OU=Users,OU=Moscow,DC=contoso,DC=local" `
    -AccountPassword (ConvertTo-SecureString "TempP@ss1!" -AsPlainText -Force) `
    -Enabled $true `
    -ChangePasswordAtLogon $true

# Проверяем что создался
Get-ADUser -Identity "pivanov"

На самом деле командлет New-ADUser имеет кучу параметров. Можно задать телефон, отдел, должность, менеджера. Но это уже по необходимости.

Расширенные атрибуты пользователя AD

При создании пользователя через PowerShell можно сразу заполнить все поля карточки. Вот полный пример:

# Полная карточка пользователя AD с основными атрибутами
New-ADUser -Name "Петров Алексей" `
    -GivenName "Алексей" `
    -Surname "Петров" `
    -SamAccountName "apetrov" `
    -UserPrincipalName "[email protected]" `
    -DisplayName "Петров Алексей Сергеевич" `
    -Title "Менеджер по продажам" `
    -Department "Отдел продаж" `
    -Company "ООО Контосо" `
    -Office "Москва, офис 305" `
    -OfficePhone "+7 (495) 123-45-67" `
    -MobilePhone "+7 (916) 765-43-21" `
    -EmailAddress "[email protected]" `
    -Manager "CN=Сидоров Иван,OU=Users,DC=contoso,DC=local" `
    -Path "OU=Sales,OU=Users,DC=contoso,DC=local" `
    -AccountPassword (ConvertTo-SecureString "TempP@ss1!" -AsPlainText -Force) `
    -Enabled $true `
    -ChangePasswordAtLogon $true

По факту, чем больше данных вы заполните при создании, тем меньше работы потом. Поля Department и Title используются в отчётах, фильтрации и автоматическом назначении групповых политик. А поле Manager формирует иерархию для Microsoft 365 и Exchange.

Массовое добавление пользователей из CSV

Вот тут PowerShell раскрывается по-настоящему. Кстати, именно этот сценарий чаще всего нужен сисадминам.

Допустим, вам прислали файл из отдела кадров. 200 новых сотрудников. Руками заводить? Нет уж.

Формат CSV-файла:

# Пример CSV-файла (users.csv)
# Разделитель точка с запятой, кодировка UTF-8 с BOM
# Name;SamAccountName;Department;Title;Password
# Иванов Пётр;pivanov;Бухгалтерия;Бухгалтер;TempP@ss1!
# Петрова Мария;mpetova;IT;Разработчик;TempP@ss2!
# CSV-файл должен быть в UTF-8, иначе кириллица сломается
# Формат: Name,SamAccountName,Department,Password
$users = Import-Csv -Path "C:users.csv" -Delimiter ";"

foreach ($user in $users) {
    # Создаём каждого пользователя из файла
    try {
        New-ADUser -Name $user.Name `
            -SamAccountName $user.SamAccountName `
            -Department $user.Department `
            -AccountPassword (ConvertTo-SecureString $user.Password -AsPlainText -Force) `
            -Enabled $true `
            -Path "OU=NewUsers,DC=contoso,DC=local"

        Write-Host "Создан: $($user.Name)" -ForegroundColor Green
    }
    catch {
        # Если юзер уже есть или пароль не подходит под политику
        Write-Host "Ошибка: $($user.Name) - $_" -ForegroundColor Red
    }
}

Мой знакомый Дмитрий из Екатеринбурга настроил такой скрипт на своём HP ProLiant DL380 Gen10, и теперь каждый квартал загружает новых сотрудников одной командой. Раньше тратил на это два дня. Сейчас пять минут.

Настройка групп и прав доступа

Создать пользователя мало. Нужно дать ему правильные права.

В Active Directory есть несколько типов групп:

  • Security Groups (группы безопасности) для управления доступом к ресурсам
  • Distribution Groups (группы рассылки) для почты, к правам отношения не имеют

По области действия:

Тип группыМожет включатьОбласть действияКогда использовать
Domain LocalПользователей и группы из любого домена лесаТолько свой доменНазначение прав на ресурсы
GlobalПользователей только из своего доменаВесь лесГруппировка пользователей по отделам
UniversalПользователей и группы из любого доменаВесь лесМногодоменные среды

А зачем это нужно? Ну вот представьте: у вас 10 серверов и 500 пользователей. Без групп вы будете настраивать права каждому на каждом сервере. С группами один раз настроил и забыл.

# Создаём группу безопасности для бухгалтерии
New-ADGroup -Name "Бухгалтерия" `
    -GroupScope Global `
    -GroupCategory Security `
    -Path "OU=Groups,DC=contoso,DC=local"

# Добавляем пользователя в группу
Add-ADGroupMember -Identity "Бухгалтерия" -Members "pivanov"

# Проверяем членство, чтобы убедиться
Get-ADGroupMember -Identity "Бухгалтерия"

Оснастка Active Directory Users and Computers

Графический интерфейс никто не отменял. Короче, для единичных операций ADUC вполне годится.

  1. Откройте Server Manager
  2. Tools, Active Directory Users and Computers
  3. Найдите нужный OU (организационная единица)
  4. Правая кнопка, New, User
  5. Заполните форму в два шага: сначала имя, потом пароль

Через GUI делать массовые операции больно. Но для создания одного-двух пользователей в день, почему нет.

Кстати, в ADUC можно включить расширенный режим (View, Advanced Features). Тогда станут видны дополнительные вкладки в свойствах пользователя: атрибуты, репликация, безопасность объекта.

Типичные ошибки при создании пользователей

За 10 лет работы я насмотрелся всякого. Вот самые частые косяки.

Ошибка 1: пароль не соответствует политике. Если у вас настроена политика паролей (а она должна быть настроена), пароль нового пользователя должен ей соответствовать. Минимум 8 символов, большие и маленькие буквы, цифры, спецсимволы.

Ошибка 2: дублирование SamAccountName. В домене не может быть двух пользователей с одинаковым SamAccountName. Если у вас два Иванова, придётся придумать разные логины.

Ошибка 3: неправильный OU. Создали пользователя в корне домена, а потом удивляетесь, что к нему не применяются групповые политики. GPO привязываются к OU, а не к домену целиком (ну, обычно).

Ошибка 4: забыли включить учётку. По умолчанию New-ADUser создаёт отключённую учётную запись, если не указать -Enabled $true. Потом сидишь, думаешь, почему человек не может войти.

Ошибка 5: не задали OU для временного сотрудника. Если честно, это головная боль через полгода, когда временный сотрудник уволился, а учётка осталась в основном OU с полными правами. Заведите отдельный OU «Temporary» и не забывайте чистить.

Делегирование прав на создание пользователей

Не всегда сисадмин должен заводить учётки сам. Можно делегировать.

В ADUC правой кнопкой по OU, Delegate Control. Выбираете группу (например, «IT-Support»), выбираете права «Create, delete, and manage user accounts». Готово.

На самом деле делегирование это мощная штука. Наталья из нашего филиала в Новосибирске сама заводит учётки для своего отдела, не дёргая центральных админов. Работает на обычном компе с установленными RSAT-инструментами, подключается к контроллеру домена на Lenovo ThinkSystem SR650.

Управление паролями: политики и сброс

Грубо говоря, пароли это половина работы с пользователями. Вот основные операции:

# Сброс пароля пользователя
Set-ADAccountPassword -Identity "pivanov" -Reset -NewPassword (ConvertTo-SecureString "NewP@ss123!" -AsPlainText -Force)

# Разблокировка заблокированного аккаунта
Unlock-ADAccount -Identity "pivanov"

# Принудительная смена пароля при следующем входе
Set-ADUser -Identity "pivanov" -ChangePasswordAtLogon $true

# Поиск заблокированных аккаунтов в домене
Search-ADAccount -LockedOut | Select Name, SamAccountName, LastLogonDate

Знаете что? Самая частая проблема, с которой звонят пользователи: «У меня заблокировалась учётка». В 90% случаев это из-за старого пароля, сохранённого на мобильном устройстве или в другом приложении. Пользователь сменил пароль на компе, а телефон продолжает стучаться со старым, и после 5 попыток учётка блокируется.

Аудит создания учётных записей

Знаете что, аудит реально важен. Кто создал учётку? Когда? Зачем?

Включается через Group Policy:

  1. Computer Configuration, Policies, Windows Settings, Security Settings
  2. Advanced Audit Policy Configuration, Account Management
  3. Включите «Audit User Account Management» на Success и Failure

После этого в Event Viewer будут появляться события с ID 4720 (учётка создана), 4722 (включена), 4725 (отключена), 4726 (удалена).

# Быстрый поиск событий создания учёток за последние сутки
# Event ID 4720 означает что кто-то создал новую учётную запись
Get-WinEvent -FilterHashtable @{
    LogName = 'Security'
    ID = 4720
    StartTime = (Get-Date).AddDays(-1)
} | Select-Object TimeCreated, Message

Автоматизация жизненного цикла пользователя

Вот в чём прикол: создание учётки это только начало. Полный жизненный цикл пользователя в AD выглядит так:

  1. Создание учётки (приём на работу)
  2. Назначение групп и прав
  3. Перемещение между OU (перевод в другой отдел)
  4. Сброс пароля (забыл, заблокировался)
  5. Отключение учётки (увольнение)
  6. Удаление учётки (через 30-90 дней после увольнения)

Каждый этап можно автоматизировать через PowerShell-скрипты. Вот пример скрипта для обработки увольнений:

# Скрипт обработки увольнения сотрудника
# Запускается при получении заявки от HR
param (
    [string]$Username
)

# Отключаем учётку (не удаляем сразу!)
Disable-ADAccount -Identity $Username

# Перемещаем в OU "Уволенные"
$User = Get-ADUser -Identity $Username
Move-ADObject -Identity $User.DistinguishedName `
    -TargetPath "OU=Disabled,DC=contoso,DC=local"

# Удаляем из всех групп кроме Domain Users
$Groups = Get-ADPrincipalGroupMembership -Identity $Username |
    Where-Object {$_.Name -ne "Domain Users"}
foreach ($Group in $Groups) {
    Remove-ADGroupMember -Identity $Group -Members $Username -Confirm:$false
}

# Записываем дату увольнения в описание
Set-ADUser -Identity $Username -Description "Уволен $(Get-Date -Format 'dd.MM.yyyy')"

Write-Host "Обработан: $Username" -ForegroundColor Yellow

Тут такое дело: никогда не удаляйте учётку сразу при увольнении. Отключите, переместите в отдельный OU и подождите 30-90 дней. Бывает, что уволенному сотруднику нужно восстановить доступ к файлам (например, для передачи дел). С удалённой учёткой это невозможно.

Шаблоны пользователей в AD

Если у вас в компании стандартные роли (бухгалтер, менеджер, разработчик), создайте шаблонные учётки. Шаблон это обычная учётная запись AD, отключённая, с заполненными полями: группы, OU, настройки.

Когда нужно создать нового бухгалтера, копируете шаблон: в ADUC правый клик на шаблон, Copy. Новый пользователь унаследует все группы и настройки шаблона. Быстрее и без ошибок.

# Копирование шаблонного пользователя через PowerShell
$Template = Get-ADUser -Identity "template-accountant" -Properties MemberOf
$NewUser = New-ADUser -Name "Козлова Ирина" -SamAccountName "ikozlova" `
    -Instance $Template `
    -AccountPassword (ConvertTo-SecureString "TempP@ss1!" -AsPlainText -Force) `
    -Enabled $true

# Копируем членство в группах из шаблона
$Template.MemberOf | ForEach-Object {
    Add-ADGroupMember -Identity $_ -Members "ikozlova"
}

Мой коллега Максим (администрирует домен на 350 пользователей, контроллер домена на HPE ProLiant DL360 Gen10 с двумя Xeon Silver 4214) использует шаблоны для каждого отдела. Говорит, ошибок при создании пользователей стало в 5 раз меньше. Раньше забывали добавить в нужную группу, теперь шаблон всё делает автоматически.

Fine-Grained Password Policy: разные политики для разных групп

По факту, иногда нужны разные политики паролей для разных пользователей. Администраторам 16 символов с обязательной двухфакторной. Обычным пользователям 10 символов. Сервисным аккаунтам длинный пароль без срока действия.

Это называется Fine-Grained Password Policy (FGPP) и работает начиная с Windows Server 2008 R2.

# Создаём политику для администраторов
New-ADFineGrainedPasswordPolicy -Name "Admin-PasswordPolicy" `
    -Precedence 10 `
    -MinPasswordLength 16 `
    -MaxPasswordAge "30.00:00:00" `
    -LockoutThreshold 3 `
    -LockoutDuration "00:30:00" `
    -ComplexityEnabled $true

# Привязываем к группе
Add-ADFineGrainedPasswordPolicySubject -Identity "Admin-PasswordPolicy" `
    -Subjects "Domain Admins"

Управление учётками через Windows Admin Center

А ещё есть Windows Admin Center. Это веб-консоль от Microsoft, которая заменяет кучу оснасток.

Через WAC можно управлять локальными пользователями на серверах удалённо, прямо из браузера. Удобно, когда серверов много и нет желания ставить RSAT на каждую рабочую станцию.

Ну и последнее. Какой бы метод вы ни выбрали, главное правило: документируйте. Записывайте кому и зачем создали доступ. Когда через полгода уволится сотрудник, вы будете знать что отключить. Ведите хотя бы простую таблицу: логин, ФИО, отдел, дата создания, группы, кто запросил. Это минимум, но этот минимум спасает при аудитах и разборках «кто дал ему доступ к серверу бухгалтерии». По факту, без документации вы управляете не инфраструктурой, а хаосом.

Где взять лицензию для Windows Server

Без лицензии сервер через какое-то время начнёт перезагружаться каждый час. Купить ключик для Windows Server можно в keytrust24.store. Есть версии 2016, 2019, 2022, Standard и Datacenter. Активация моментальная, ключи привязываются к серверу навсегда.

Кстати, для Datacenter-лицензии количество виртуальных машин не ограничено. Если у вас Hyper-V с кучей виртуалок, Datacenter выйдет дешевле, чем покупать Standard на каждые две ВМ.