Вопрос или проблема
В Windows (в частности, Windows Server 2012) мне нужно изменить право собственности на папку с множеством подпапок и файлов.
Вот: рекурсивно изменить владельца windows 7 (и в других местах) люди предлагают использовать команду ‘takeown’ для этого. Проблема в том, что мне нужно установить другого пользователя в качестве владельца, а не себя. Но я не знаю их пароля, и я не хочу делиться с ними паролем администратора, чтобы они могли выполнить эту команду с правами администратора самостоятельно.
Когда я попытался указать целевого пользователя для команды ‘takeown’: takeown /S 127.0.0.1 /U someuser /F somedir /R
, она ответила, что учетные данные пользователя не могут быть использованы для локальных подключений.
Как я могу рекурсивно установить другого пользователя владельцем директории/файла в Windows?
Пользователю не нужны права администратора для использования takeown
, если сначала предоставить ему разрешение “ВзятьOwnership” на объекты. (Это WO
в icacls, что означает “Записать владельца”, и включено в набор “Полный доступ” F
.)
-
Предоставьте “Полный доступ” (наследуемый):
icacls C:\foo /grant "DOM\user:(OI)(CI)(F)
-
Или предоставьте что-то вроде “Чтение” + “Записать владельца” только (наследуемый):
icacls C:\foo /grant "DOM\user:(OI)(CI)(R,WO)"
-
Теперь пользователь может взятьOwnership папки.
В последних версиях Windows вы также можете использовать icacls /setowner
, чтобы напрямую назначить право собственности другому пользователю:
icacls C:\foo /setowner "DOM\user" /t /l
Это не часть takeown
, потому что она выполняет фактическое изменение через совершенно другую операцию, чем просто взятие права собственности, и требует прав администратора, независимо от того, какие права у вас в данный момент есть на файл.
(В частности, /setowner
требует системных прав “Создание резервных копий файлов” и “Восстановление файлов”, которыми по умолчанию обладают только администраторы и операторы резервного копирования. В сравнении, takeown использует только право “ВзятьOwnership” и/или разрешение на уровне файла.)
Ответ или решение
Чтобы рекурсивно изменить владельца папки и её содержимого в Windows (в частности, на сервере Windows 2012), выполните следующие шаги. Этот процесс включает в себя использование команд icacls
для управления правами доступа и обеспечения того, чтобы целевой пользователь мог получить владение.
Шаги по изменению владельца
-
Подготовка системы:
Убедитесь, что у вас есть доступ к учетной записи с правами администратора, поскольку вы будете изменять права на папку и её содержимое. -
Предоставление прав целевому пользователю:
Вам нужно предоставить целевому пользователю права на папку, чтобы он мог взять на себя владение. В этом случае вы можете добавить права «Полный контроль» или специфические права, такие как «Чтение» и «Запись владельца» (WO).Введите следующую команду в командной строке с правами администратора:
icacls C:\путь\к\папке /grant "DOM\пользователь:(OI)(CI)(F)"
Эта команда предоставляет «Полный контроль» (F) для указанного пользователя на папку и ее содержимое.
(OI)
и(CI)
обозначают, что права будут наследоваться для всех файлов и подпапок.Если вы хотите предоставить только права на чтение и право «Запись владельца», используйте команду:
icacls C:\путь\к\папке /grant "DOM\пользователь:(OI)(CI)(R,WO)"
-
Изменение владельца:
В Windows вы можете воспользоваться командойtakeown
, однако она не позволяет установить владельца на другого пользователя. Вместо этого вы можете использовать командуicacls
для прямого назначения владельца. Тем не менее, команда/setowner
требует прав администратора.Выполните следующую команду:
icacls C:\путь\к\папке /setowner "DOM\пользователь" /t /l
Параметр
/t
используется для рекурсивного применения команды ко всем подкаталогам и файлам внутри выбранной папки, а/l
указывает, что операция должна применяться к символическим ссылкам. -
Проверка:
После выполнения команд проверьте, стал ли целевой пользователь владельцем. Это можно сделать с помощью команды:icacls C:\путь\к\папке
В выводе должно отображаться имя нового владельца.
Заключение
Изменение владельца файлов и папок в Windows требует администраторских прав и внимательного управления правами доступа. Использую команды icacls
, вы можете эффективно управлять правами доступа и назначать владельцев рекурсивно. Если у вас нет возможности предоставить пользователю права администратора или не хотите делиться паролем с ним, использование icacls
— оптимальное решение.
Помните, что правильное управление правами доступа и владением критически важно для безопасности системы.