Одними из наиболее частых вопросов, которые я получаю по поводу миграции данных, связаны с владением файлами. Права владельца часто теряются в процессе копирования. Robocopy XP010 – самая последняя версия этой утилиты, входит в комплект утилит Microsoft Windows Server 2003 Resource Kit и поддерживает NTFS- атрибуты копируемых данных, включая информацию о владельце файла. Другие утилиты миграции могут не сохранять подобную информацию. Если вы используете группу Creator Owner для предоставления прав, потеря информации о владельце во время переноса данных может привести к нарушению безопасности. Наиболее простой и легкий путь заново присвоить признак владельца к переносимым файлам - это использование утилит, восстанавливающих этот признак. Ими можно воспользоваться и в тех случаях, когда вам необходимо переназначить право владения во время переноса данных, например, в случае переноса файла, чей владелец отсутствует в организации.

Мы все уверены, что в Windows (NTFS) право владения может быть только принято, но не присвоено. Но фактически, несколько утилит могут заново назначить право владения (ownership) в файловой структуре. Давайте рассмотрим процесс присвоения права владения в некоторой структуре данных. Для этого воспользуемся свободно распространяемой утилитой Chown, написанной Alexander Frink . Её можно загрузить по адресу http://wwwthep.physik.uni-mainz.de/~frink/nt.html. Информация о других подобных инструментах имеется на врезке: «Утилиты управления владением».

Использование Chown

Для просмотра встроенной справки по использованию Chown, запустите chown.exe без задания аргументов в окне командной строки. Архив файлов chown.zip также содержит файл readme.html, в котором более детально описано использование этого инструмента. Синтаксис этой команды следующий:

chown.exe [-r] [-q] [-v] [-s] [-d domain | machine] owner files

Утилита поддерживает несколько дополнительных переключателей: Ключ -r - рекурсия включает просмотр вложенных объектов и подкаталогов. Ключ -q (-quiet) задает режим, при котором Chown ограничивает вывод информации о работе, выводя только сообщения об ошибках. Напротив, ключ -v (verbose) заставляет Chown выводить информацию обо всех своих действиях. Вы можете воспользоваться переключателем -s (skip), чтобы пропускать каталоги в пути и присвоить необходимый атрибут владельца только файлам. Переключатель -d domain | machine позволяет задать домен или систему, к которым принадлежит новый владелец объектов. Два обязательных параметра - это owner, задающий нового владельца файла или файлов. Второй параметр files указывает на файл, или файлы, подлежащие модификации. Параметр файл может содержать символы звездочки (*) и знаки вопроса (?), для любых операций над файлами. Если в пути присутствуют пробелы, заключите путь в двойные кавычки (" “).

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

chown.exe -r SalesRLewis "salessrv1publicfoldersrlewis*.*"

Эта команда присваивает атрибут владельца всем файлам в заданной папке RLewis.

Когда у вас есть набор пользовательских папок, к которым вы хотите присвоить другой атрибут владельца, вам понадобится создать текстовый файл, отображающий (map) идентификаторы пользователей на каждую из целевых папок. Создайте файл формата (CSV) с именем MappingList.txt, наполните его параметрами для каждого из пользователей: ID&150; целевая папка. Каждая пара должна располагаться на отдельной строке, в которой target ID и имя папки разделены знаком (;) как показано на Листинге 1. После того, как вы создали файл MappingList.txt и сохранили его в удобном месте (в пути не должно быть пробелов). Вы можете также создать пакетный файл ChangeOwnership.bat, содержимое которого представлено на Листинге 2, либо вы можете выполнить этот код прямо из командной строки. Задайте местоположение, где расположен MappingList.txt. Если вы выберите последний вариант, убедитесь что вы заменили одиночные знаки процента вокруг подстановочных переменных (%i и %j) двойными знаками процента (%%i and %%j), как это используется в коде на Листинге 2.

Я обнаружил только одно ограничение в Chown. Оно состоит в некоторой сложности в различении учетных записей локальных групп. Если вы предварите учетную запись пользователя именем компьютера-сервера, вы получите сообщение Unknown local user об ошибке. Например, если вы работаете на системе с именем Work1 и хотите изменить владельца на локального администратора, надо использовать синтаксис:

chown.exe -r Administrator "salessrv1folderATest*.*"

вместо

chown.exe -r Work1Administrator salessrv1folderATest*.*

Если вы хотите изменить владельца для учетной записи домена, вы должны использовать синтаксис

chown.exe -r SalesRLewis salessrv1folderATest*.*

Найдите объекту владельца

Вы можете воспользоваться утилитами, такими как Chown для присвоения свойства владельца файла в тех случаях, когда эта информация потеряна, либо должна быть сброшена по некоторым другим причинам. Познакомьтесь с этой и другими подобными утилитами, которые обсуждаются во врезке "Утилиты управления владением" и возьмите их себе на вооружение вместе с технологией разрешения проблем владения в ваших структурах файлов и папок.


Утилиты управления владением

В основной статье, мы обсуждали, как использовать утилиту Chown.exe, написанную Alexander Frink (http://wwwthep.physik.uni-mainz.de/~frink/nt.html) для передачи владения файлом другому пользователю. Chown – это только одна из нескольких интересующих нас утилит командной строки, доступных на сайте Alexander Frink; я уверен, что вы обратите внимание и на другие инструменты на его сайте.

Microsoft также предоставляет несколько полезных утилит для управления правом владельца для Windows NTFS. Утилита Subinacl, доступная в нескольких версиях Microsoft Windows Resource Kit имеет ключ /setowner=owner, который возможно использовать для изменения владельца. Однако, утилита имеет достаточно хитрый набор переключателей и представляется не очень дружественным инструментом. Дополнительная информация о Subinacl имеется в статье Microsoft "Using the Command Line to Edit Multiple Subdirectory Permissions" (http://support.microsoft.com/?kbid=265360). Утилита Fileowners.pl, основанный на Perl инструмент Microsoft Windows 2000 Server Resource Kit . Ее использование требует установки Perl на узле, который инициирует запрос. Детальная информация об этом инструменте доступна в статье Microsoft "HOW TO: Use the File Ownership Script Tool (Fileowners.pl) in Windows 2000" по адресу http://support.microsoft.com/?kbid=320046. Fileman.vbs – другая утилита из Microsoft Windows NT 4.0 Resource Kit или Windows 2000 Resource Kit.

Хотя вы не можете использовать Robocopy XP010 для непосредственного изменения информации о владельце, вы можете воспользоваться ей для копирования этих атрибутов вместе с файлами, задав переключатель COPYALL. Если вы используете более деликатный ключ COPY/DATSOU, то вы должны включить переключатель O для того, чтобы скопировать информацию о владельце. Ранние версии Robocopy не имели возможности копирования атрибута владельца. Дополнительная информация об этом имеется в статье "Вопросы и ответы по работе с Robocopy" в шестом номере Windows IT Pro/RE за 2006 год.

И конечно дискуссия о владении файлами не будет полной без упоминания о верной команде Dir. Вы можете использовать ключ Q для просмотра информации о владельце, как показано в следующем примере этой команды:

Dir /Q salessrv1folderATest*.*

Листинг 1. Sample MappingList.txt
SalesRLewis,server3users
lewis*.*
SalesGSmith,server3usersgsmith*.*
AcctgSJones,server3userssjones*.*
Листинг 2. ChangeOwnership.bat
For /F "tokens=1,2 delims=," %%i in (D:MappingList.txt) do chown.exe -r %%i "%%j"