Каждый администратор всегда сводит свои действия к минимуму, пишет скрипты, пишет программы и чтобы меньше делать рутинных задач приходится проявлять фантазию и поработать головой. Хочу поделиться своим опытом, может кому-то и поможет. У меня в компании сейчас малое количество сотрудников, порядка 15-18. Почта создается на сервере Zimbra, а каждый сотрудник работает под своей локальной учетной записью на компьютере. И до меня тут исторически сложилось, что AD нет.
Появилась потребность в разворачивании файлового сервера, я развернул его на базе MS Windows server 2016, из себя он представляем роль файлового сервера, где создан VMDX(виртуальный жесткий диск) который и является общим пулом для всех. По доступу все просто, создаем локальные группы и даем разрешения на группы, а далее каждого сотрудника добавляем в эти самые группы. Но заводить каждого сотрудника вручную, двигать мышкой, перещелкивать вкладки и потом еще писать письмо сотруднику с паролем и доступом, это не "тру". В итоге я написал небольшой скрипт, где из одного консольного окна мы делаем эти все действия в 4 шага.
Для начала нам надо создать пользователя, создать ему пароль и добавить описание, для этого передать данные в переменные.
$login=read-host "Введите имя сотрудника" #Здесь укажем логин пользователя
$name=read-host "Введите полное имя сотрудника" #Это ФИО
$dep=read-host "Должность сотрудника" #Это поле описание
$Chars = [Char[]]"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" #Символы которые могут использоваться в пароле
$Password=($Chars | Get-Random -Count 10) -join "" #Генерируем пароль длиной в 10 символов
$date = Get-Date #Получаем дату
" $date " + "для сотрудника" + " srv-fs\" + "$login " + "создан пароль" + " $Password" >> "X:\IT\password_users.txt"
$us="$login"+"@"+"domain.net" #Собираем все в строчку и записываем в файлик
После прохождения этого блока мы получаем строчку в файле — "02/12/2018 08:18:24 для сотрудника srv-fs\testovich создан пароль a15qBci2m9", далее нужно создавать эту учетную запись.
$SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force #Конвертируем сгенерированный пароль в шифрованный
New-LocalUser "$login" -Password $SecurePassword -PasswordNeverExpires -FullName "$Name" -Description "$dep" #Создаем пользователя
Add-LocalGroupMember -Group "Share" -Member "$login" #Добавляем нашего пользователя в общую группу
В итоге после прохождения следующего блока мы получаем учетную запись с группой Share.
А теперь отправим сотруднику данные для входа.
$EmailFrom = "srv-fs@domain.net" #От этого имени оправляем письмо
$EmailTo = "it@domain.net,$us" #Здесь мы отправляем письмо адресатам где $us - это $login"+"@"+"domain.net
$Subject = "Доступ к общему диску"
$Body = "$name" + ", вам предоставлен доступ к общему сетевому диску. Для входа используйте. " + "Имя пользователя" + " srv-fs\" + "$login " + " | Пароль" + " $Password" + "|" #Тело письма
$SmtpServer = "mx.domain.net" #Сервер отправки
$smtp = New-Object net.mail.smtpclient($SmtpServer)
$smtp.Send($EmailFrom, $EmailTo, $Subject, $Body)
На почту сотрудика придет сообщение с темой "Доступ к общему диску", а в теле письма будет
"Ivanov Ivan Testovich, вам предоставлен доступ к общему сетевому диску. Для входа используйте. Имя пользователя srv-fs\testovich | Пароль a15qBci2m9|"
Не забываем, ведь сотрудник работает в каком-то подразделении а у нас доступ к папкам по группам, теперь нам надо добавить пользователя в нужную группу.
#Выводим список доступных отделов которые соответствуют группам, строка номер 1 соответствует первой строке групп
Write-Host ?Выберите подразделение? -ForegroundColor Red
Write-Host ?1. Бухгалтерия? -ForegroundColor Green
Write-Host ?2. Администраторы? -ForegroundColor Green
Write-Host ?3. Аналитики? -ForegroundColor Green
Write-Host ?4. Разработчики? -ForegroundColor Green
Write-Host ?5. Отдел кадров? -ForegroundColor Green
Write-Host ?6. IT? -ForegroundColor Green
Write-Host ?7. Руководство? -ForegroundColor Green
Write-Host ?8. Выход или не назначать подразделение? -ForegroundColor Red
$choice = Read-Host ?Введите номер подразделения? #Будем ожидать номер подразделения
Switch($choice){
1{Add-LocalGroupMember -Group "Account" -Member "$login"}
2{Add-LocalGroupMember -Group "Admin" -Member "$login"}
3{Add-LocalGroupMember -Group "Analytic" -Member "$login"}
4{Add-LocalGroupMember -Group "Developer" -Member "$login"}
5{Add-LocalGroupMember -Group "HR" -Member "$login"}
6{Add-LocalGroupMember -Group "IT" -Member "$login"}
7{Add-LocalGroupMember -Group "Management" -Member "$login"}
8{Write-Host ?Выход?; exit}
default {Write-Host ?Неверное значение, попробуйте еще раз.? -ForegroundColor Red}
}
И в конце всего этого мы имеет готового пользователя с правильными группами, описанием и паролем. Сотрудник же в свою очередь получил письмо и подключился к диску, а если и нет то, это уже совсем другая история...
Комментарии (30)
Smearg
12.02.2018 16:01Для отправки письма проще использовать командлет Send-MailMessage.
andyrootman
12.02.2018 16:36А для генерирования пароля можно использовать [System.Web.Security.Membership]::GeneratePassword(8,$null)
hamnsk
12.02.2018 16:53+1пособие для мамкиных кулхацкеров))) а не судьба разок нормально АД настроить, и ГПО разрулить? А пароль всем нужно выдавать временный, и менять его при первом входе, причем ГПО не даст назначить что то вроде 1234567 и прочих, если конечно политика не отключена.
Да и не совсем понятно, если АД и ГПО настроены не пофиг ли где вводить, в окне консоли или в окне диалога? С учетом того, что УЗ можно копирнуть, да и некоторые поля например заполняют типа кабинета местонахождения времени действия и тд…encore-show Автор
12.02.2018 18:09да, хоть для мамкиных кулцхакеров)) Нормально настроить AD которого нет, ну да логично. Локальная ГПО сервера и так не дает создать пароль 1 и т.п. Так что либо вы не внимательно прочитали, либо бегло пробежались по статье. Если бы было ГПО, были бы аушки и нормальные группы, создал пользователя в определенной аушке и подцепились группы и можно было бы монтирование диска сделать гпо, а у меня ситуации WORKGROUP. Поэтому даже пароль поменять временный не выйдет, так к терминалке нет доступа.
hamnsk
12.02.2018 18:31я прочитал статью, и вместо того чтобы поднять АД и настроить, вы стали изобретать костыль, чтобы облегчить жизнь временно. Сегодня у вас 15-18 сотрудников, и внимание вопрос, работая в этой компании вы не знаете сколько у вас УЗ и сколько вы обслуживаете компов? и Сколько сотрудников? Там где есть сетка шары и больше 3-х компов уже имеет смысл поднять АД. Ну так если у вас рдп на сервере отключен то конечно не выйдет, а если бы тачка была в домене то и не нужна консоль он при входе на своей тачке сменит, или если бы почта на ЛДАП завязана бы была, то через почтовый клиент.
encore-show Автор
12.02.2018 18:55Это все конечно хорошо, про необходимость контроллера от 3-х компов есть разные мнения. Кто-то считает нужным кто-то нет, на данный момент инфраструктура не требует контроллера. А так конечно да, AD удобнее. Создал объект поместил куда-надо, также с пользователем и пароль бы менял, тебе и политика, диски, принтеры… но имеем то, что имеем. Пока честно не вижу острую необходимость в домене, пока перспективы роста количества сотрудников нет. Да и потом если поднимать контроллер, то необходимо их два, а это уже финансовые затраты, которые в глобальном понимании стоят дороже 15 — 18 пользователей. Так как выйдет один ФС и два контроллера.
therb1
13.02.2018 00:54Посмотрите статью, старайтесь автоматизировать все что можете.
habrahabr.ru/post/280710
tiss42rus
13.02.2018 08:32Какие финансовые затраты? там ему много не надо вообще учитывая количество пк. не обязательно два, можно один даже на виртуалке, но со строгим контролем бэкапа и проверкой восстановления.У меня 5 лет так работает, примерно 70 рабочих станций. Проблем не было. А в вашем случае даже если домен рухнет этого можно не бояться. за 10-20 минут можно вывести всех если в одном офисе сидите.
encore-show Автор
13.02.2018 08:37Финансовые затраты на лицензии сервера, когда я написал о том, что нужно 2 машинки под контроллер и под фс, я же не написал про физ.сервера. у меня все прекрасно крутится на esxi. Потом, почему все пристали с доменом. Я админил больше 250 тачек и пользователей, там домен необходим был, здесь же мне пока нужды в нем нет. Аргумент что одного контроллера достаточно и при падении, можно всех вывести из домена, вы серьезно? А можно иметь два контроллера и для пользователя это будет без остановки работы.
tiss42rus
13.02.2018 09:16да вполне серьезно, вывод пользователей, это уже на случай, если ты бэкапы не делаешь домена, в предприятии где 15 человек сидит, где несколько минут простоя не критично, два контролера это жирно я думаю, ни к чему.
encore-show Автор
13.02.2018 10:02«где несколько минут простоя не критично» — критично. Опять же, при наличии одного контроллера, второй уже не сложно поднять. И еще раз, вывод из домена при падении, это костыль, напоминаю что правильно потом ввести в домен нужно через удаление и создание объекта, а иначе можно словить ошибку — «Не удалось установить доверительные отношения между этой рабочей станцией и основным доменом»
mishutka_ua
13.02.2018 08:39Univention Corporate Server как вариант, с zimbra дружит
encore-show Автор
13.02.2018 09:12спасибо, помню когда он только появлялся, был не очень, на этом мое знакомство с ним прекратилось.
mishutka_ua
13.02.2018 17:50На данный момент, для такого количества рабочих мест и для таких задач, более, чем достаточно.
encore-show Автор
13.02.2018 08:43спасибо, помню когда он только появлялся, был не очень, на этом мое знакомство с ним прекратилось.
scruff
13.02.2018 11:19Рано или поздно Вам портребуется развернуть АД. Очень многие приложения и их процессы аутентификации сейчас завязаны именно на неё. Если сейчас юзеров от 10 и более — активку просто «must have». Да и в принципе, что мешает развернуть активку на там же самом файл-сервере? «Весит» и потребляет ресурсов просто граммами.
vviz
13.02.2018 19:53Вот не знаю как сейчас, но некоторые годы назад был программный пакет под названием pGina. И реализовывал он функции создания локальных уч. записей через администрирование центральной базы. Т.е. админ создавал в базе запись и при первом логине в системе клиент данного ПО создавал локальную запись в системе. Причем типов баз было несколько, вроде как mysql и еще что-то.
Mchechulin
Я не совсем понял, как пользователь получит свои логин и пароль. Он же должен сначала получить логин и пароль и толь после этого он получает доступ к компьютеру и корпоративной почте.
encore-show Автор
Когда сотрудник к нам приходит ему создается учетка в Zimbra (LDAP), у него уже появляется почта. А потом уже дается доступ к общему диску, а иногда и не требуется, если это подрядчик.
Dobryak88
Доступ к почтовому ящику он должен получить с какого-то личного устройства?
encore-show Автор
Почему, со своей рабочей станции, через web интерфейс или же любой почтовый клиент.
Dobryak88
А в какой момент он получает логин/пароль от своей рабочей станции?
encore-show Автор
Когда человека приняли на работу, отдел кадров сообщает нам, далее мы на рабочей станции создаем локального пользователя. Когда же сотрудник садится за компьютер он видит своего пользователя в приветствии, вводит свой временный пароль и меняет на свой. Пароль он спрашивает у нас, мы работаем в двух кабинетах через стенку.