![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
ViP
![]() Пол:
Регистрация: 18.01.2006
Адрес: MSK RU
Сообщений: 2,798
Репутация: 1164
|
В свете периодически обсуждаемых проблем с правами пользователей на папки выкладываю описание технологии, как это делаю я.
Политика такова.
Итак, типовой логон-скрипт allusers.cmd: Код:
@net use * /delete /yes @net use N: \\server\PF\common @net use P: \\server\PF\%username% @net time \\server /set /y Сносим все шаринги пользователей, которые они могли наделать (зачем вы им вообще дали эти права?)@net use N: \\server\PF\common Подключаем общую папку. Механизм одинаков для всех.@net use P: \\server\PF\%username% А вот тут уже для каждого пользователя подключится своя папка. Замечу, что это прокатит только для англоязычных имён пользователей (не проверял!). Русские символы, imho, будут коверкаться, как обычно, командной строкой. Для их использования надо переделать этот скрипт под vbs.@net time \\server /set /y Синхронизируем время во всей сети с сервером.Картина прекрасная, но какими усилиями она достигнута? В конторе 50 челов. Админу машинисткой клепать 50 папок, копируя их из списка AD? На это дело есть скриптик, который:
Далее приведён текст скрипта CreateUsers.vbs. Перед копированием прочитайте комментарии. Строки комментариев начинаются с апострофа. Код:
Const PersonalFoldersPath = "D:\Personal folders"
Const UsersPassword = "DefPass90"
Const Enabled = 1
Const Disabled = 0
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' УСТАНОВКА ПАРАМЕТРОВ
Set objFSO = CreateObject("Scripting.FileSystemObject")
' проверяем существование файла C:\users.txt
If Not objFSO.FileExists("C:\users.txt") Then
Wscript.Echo "Users list (c:\users.txt) does not exist."
Return
End If
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\MicrosoftActiveDirectory")
Set colDomainInfo = objWMIService.ExecQuery("Select TreeName,DCName from Microsoft_LocalDomainInfo")
For each objDomain in colDomainInfo
strTreeName = objDomain.TreeName
strDCName = objDomain.DCName & "." & strTreeName
Next
strADsPath = "dc=" & Join(Split(strTreeName, "."), ",dc=")
' собираем имя DC
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ДОБАВИМ В РЕЕСТР ПОЛЕЗНЫЕ КЛЮЧИКИ
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.RegWrite("HKLM\System\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate" , 1, "REG_DWORD")
objShell.RegWrite("HKCR\Folder\Shell\MenuText\Command\", "cmd.exe /k cd " & chr(34) & "%1" & chr(34))
objShell.RegWrite("HKCR\Folder\Shell\MenuText\", "Command Prompt Here")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' СОЗДАЁМ ПАПКИ И ШАРИМ ИХ
objFSO.CreateFolder(PersonalFoldersPath)
objFSO.CreateFolder(PersonalFoldersPath & "\Common")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objNewShare = objWMIService.Get("Win32_Share")
objNewShare.Create(PersonalFoldersPath, "PF", 0, 32766, "Domain users personal folders")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' СОЗДАЁМ OU
'старт или
'создание OU
Set objDomain = GetObject("LDAP://" & strADsPath)
Set objOU = objDomain.Create("organizationalUnit", "ou=OU users")
objOU.SetInfo
'или
'использование существующего OU
'Set objOU = GetObject("LDAP://ou=OU users," & strADsPath)
'конец или
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' СОЗДАЁМ ПОЛЬЗОВАТЕЛЕЙ В AD
Set objUsersList = objFSO.OpenTextFile("c:\users.txt", 1)
Do While objUsersList.AtEndOfStream = False
strUserName = objScriptFile.ReadLine
objFSO.CreateFolder(PersonalFoldersPath & "\" & strUserName)
Set objUser = objOU.Create("User", "cn=" & strUserName)
objUser.Put "givenName", strUserName
objUser.Put "userPrincipalName", strUserName
objUser.Put "sAMAccountName", strUserName
objUser.Put "displayName", strUserName
objUser.Put "homeDrive", "P:"
objUser.Put "homeDirectory", "\\" & strDCName & "\pf\" & strUserName
objUser.Put "scriptPath", "allusers.cmd"
objUser.SetInfo
objUser.AccountDisabled = False
objUser.AllowLogon = Disabled
objUser.SetPassword UsersPassword
intUAC = objUser.Get("userAccountControl")
objUser.Put "userAccountControl", intUAC Xor ADS_UF_DONT_EXPIRE_PASSWD
objUser.SetInfo
Loop
objUsersList.Close
|
|
|
|
| Эти 3 пользователя(ей) сказали cпасибо за это полезное сообщение: |
| Реклама: |
|
|
#2
|
|
Неактивный пользователь
Пол:
Регистрация: 11.11.2008
Сообщений: 8
Репутация: 4
|
А не легче создать группу в АД а не OU и работать с группой?
|
|
|
|
|
|
#3
|
|
ViP
![]() Пол:
Регистрация: 18.01.2006
Адрес: MSK RU
Сообщений: 2,798
Репутация: 1164
|
Какую группу? Security group? У неё как у объекта нет возможности работать с отдельной политикой.
Представь, что у тебя в домене есть бухгалтерия, отдел продаж и куча боссов. У каждой группы свои политики безопасности. Как ты сделаешь их без OU? |
|
|
|
|
|
#4
|
|
если мне ни с кем не изменяет память, то в АД создать OU проще, если смотреть со стороны порядка действий
![]() И политики действительно можно накладывать только на OU. Так что вы, pincer, со всех сторон не правы ![]()
__________________
Хочешь помочь старику - сделай вместо него. Хочешь помочь новичку - сделай вместе с ним. Хочешь помочь мастеру - отойди и не мешай.А хочешь помочь дураку - сам дурак!
|
|
|
|
|
|
|
#5
|
|
Новичок
Пол:
Регистрация: 01.05.2008
Сообщений: 10
Репутация: 0
|
Всё хорошо, всё складно, вот только не понимаю зачем такие танцы с бубном в виде скриптов и файла users.txt когда можно сделать проще написав батник следующего содержания:
if not exist "\\serv\Users$\%username%" (mkdir "\\serv\Users$\%username%") net use z: \\serv\users$\%username%" при первом же логоне создаётся папка со всеми нужными правами и в дальнейшем мапится как сетевой диск |
|
|
|
|
|
#6
|
|
ViP
![]() Пол:
Регистрация: 18.01.2006
Адрес: MSK RU
Сообщений: 2,798
Репутация: 1164
|
|
|
|
|
|
|
#7
|
|
Постоялец
![]() ![]() Пол:
Регистрация: 11.04.2007
Сообщений: 285
Репутация: 85
|
2PLAstic, Какие именно полномочия нужно реализовать на папки, у меня есть пара наработок на эту тему, попробую дополнить скрипт.
|
|
|
|
|
|
#8
|
|
ViP
![]() Пол:
Регистрация: 18.01.2006
Адрес: MSK RU
Сообщений: 2,798
Репутация: 1164
|
dmitry_a, Я обычно снимаю наследование Domain Users и добавляю одноимённого пользователя с полным доступом.
На сайте микрософта можно найти примеры кода, просто когда я писал этот скрипт, то не разобрался сразу. |
|
|
|
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| GPO: запретить добавление локальных пользователей на машинах в домене | Heracl | Windows 200x Server | 6 | 09.02.2009 20:00 |
| организация hotspot | forform | Скорая помощь | 2 | 17.11.2008 03:11 |
| организация vpn соединения | artemz | Вопросы и проблемы | 7 | 17.05.2008 16:43 |
|
|