Потребовалось мне как-то перенести пользовательские папки в другое место (на другой сервер). А так, как изначально это делалось очень давно, кое как и не мной, то с правами на эти самые папки был самый настоящий бардак. Ну и раз уж приходится за это браться, захотелось сразу все сделать "правильно", т.е. чтобы доступ был только у владельца папки и группы администраторов. В Windows изначально нет инструментов для смены владельца файлов/каталогов из командной строки (по крайней мере, я не нашел. Cacls меняет только права доступа, а не владельца). По этому пришлось воспользоваться одной из программ из состава Windows Resource Kit, а именно - subinacl. (cкачать отдельно subinacl в виде msi-пакета можно отсюда). Она является значительно более продвинутым аналогом cacls. С её помощью можно не только менять разрешения на папки/файлы, но и работать с такими типами объектов, как реестр, принтеры, общие папки и т.д., менять владельца, осуществлять смену домена и многое другое. Чтобы можно было бегло ознакомиться с её возможностями, достаточно запустить команду с параметром /help. В моем случае вызов программы выглядел так:
Однако, в таком виде менялись владельцы только самих каталогов, а для смены владельцев подкаталогов и файлов потребовался повторный вызов со следующими параметрами:
Так, как папки были назначены через AD, при создании пользователя
создавалась папка вида %USERNAME%, т.е. её название соответствовало
пользовательскому имени. Это значительно упростило задачу. Для этого я написал простенький батник:
@REM Смена владельцев каталогов FOR /F "eol="" "" tokens=1,2" %%i in ('dir /ad /b') DO subinacl /subdirectories %%i /setowner=%%i@domain.local @REM Смена владельцев подкаталогов и файлов FOR /F "eol="" "" tokens=1,2" %%i in ('dir /ad /b') DO subinacl /subdirectories %%i /setowner=%%i@domain.local
Наверняка можно было сделать все в одну команду, но т.к. задача таким
образом была решена, я уже не стал заморачиваться дальше.
Помогите пожалуйста, subinacl не читает аккаунт на кирилице- есть ли варианты? исправления? или аналог subinacl... очень надо- как воздух. спасибо за ответ.
Заранее извиняюсь что отвечаю с такой большой задержкой - только вернулся из отпуска... Итак, если я правильно понял, у Вас проблема с русскими именами пользователей. Специально для тестов завел пользователя "Вася.Пупкин" и проверил смену владельца - у меня всё работает...
Code
H:\Users\Вася.Пупкин>subinacl /subdirectories H:\Users\Вася.Пупкин /setowner=Вася.Пупкин@domain.local H:\Users\Вася.Пупкин : Вася.Пупкин@domain.local is the new owner H:\Users\Вася.Пупкин : 1 change(s) ...
PS. Если не ошибаюсь, был один нюанс пока я игрался с этой тулзой - что-то не срабатывало так, как надо (увы, уже не помню что именно) и необходимо было скачать обновлённую версию с сайта мелкософта (ссылка на отдельный msi-пакет есть в начале заметки). Тесты я проводил с версией 5.2.3790.1180
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]