пятница, 24 июля 2015 г.

Перенос данных на другой Windows Server c сохранением NTFS прав доступа.

Возникла производственная необходимость мигрировать локальных пользователей и директорию, с установленными NTFS  правами с Windows Server 2003 RUS на Windows Server 2008R2.
Объем работ ~30 пользователей и более 30тыс файлов, с установленными уникальными NTFS разрешениями.
Поиск в интернетах показал, что в Windows нет штатного инструмента для миграции пользователей (с паролями) и правами доступа к файлам.
При создании новых пользователей им назначаются рандомные SID, т.е просто создать пользователя и перетащить директорию с NTFS правами не выйдет, т.к не совпадут SID.
Метод описаный тут - https://technet.microsoft.com/en-us/library/dd379531%28v=ws.10%29.aspx
не подходит, т.к используются разные локали.



Официальный ответ Microsoft:
создать необходимые учетные записи и группы на новом сервере, а уже затем изменить NTFS пермиссии.
т.е они тоже не знают и не имеют нужного инструмента.

В результате поисков нашел утилиту Subinacl.exe и решил немного подправить ее экспорт файл для достижения нужного нам результата:

SubInACL is a command-line tool that enables administrators to obtain security information about files, registry keys, and services, and transfer this information from user to user, from local or global group to group, and from domain to domain.
For example, if a user has moved from one domain (DomainA) to another (DomainB), the administrator can replace DomainA\User with DomainB\User in the security information for the user's files. This gives the user access to the same files from the new domain.

Создаем на 2008 сервере пользователей, с такими же именами как на 2003.

Устанавливаем на оба сервера утилиту Subinacl, делаем экспорт с 2003 сервера и импорт в 2008.
Для удобства экспорта делаем командный файл:
subinacl /noverbose /output=c:\perm_dir.txt /subdirectories=directoriesonly D:\ftp\*.* > dir.out 2>&1
subinacl /noverbose /output=c:\perm_file.txt /subdirectories=filesonly D:\ftp\*.* > file.out 2>&1

т.е экспортируем список прав на папки и файлы.

Редактируем полученные файлы экспорта.
Делаем поиск с заменой по всему файлу
Администраторы ==> Administrators
Отсутствует    ==> None
/pace =my_comp\directory  ==> заменяем имя 2003 сервера на имя 2008
+File D:\ftp\directory    ==> f:\ftp\directory (если используется такое же расположение файлов, то ничего не меняем. В ином случае меняем диск и начало пути. Я располагал директорию на другом диске)

Импортируем права:
subinacl.exe /playfile d:\perm_dir.txt > dir.log 2>&1
subinacl.exe /playfile d:\perm_file.txt > file.log 2>&1

И проверяем NTFS права доступа.

Популярные сообщения