Рекурсивно изменить владельца на другого пользователя в Windows

Вопрос или проблема

В 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 для управления правами доступа и обеспечения того, чтобы целевой пользователь мог получить владение.

Шаги по изменению владельца

  1. Подготовка системы:
    Убедитесь, что у вас есть доступ к учетной записи с правами администратора, поскольку вы будете изменять права на папку и её содержимое.

  2. Предоставление прав целевому пользователю:
    Вам нужно предоставить целевому пользователю права на папку, чтобы он мог взять на себя владение. В этом случае вы можете добавить права «Полный контроль» или специфические права, такие как «Чтение» и «Запись владельца» (WO).

    Введите следующую команду в командной строке с правами администратора:

    icacls C:\путь\к\папке /grant "DOM\пользователь:(OI)(CI)(F)"

    Эта команда предоставляет «Полный контроль» (F) для указанного пользователя на папку и ее содержимое. (OI) и (CI) обозначают, что права будут наследоваться для всех файлов и подпапок.

    Если вы хотите предоставить только права на чтение и право «Запись владельца», используйте команду:

    icacls C:\путь\к\папке /grant "DOM\пользователь:(OI)(CI)(R,WO)"
  3. Изменение владельца:
    В Windows вы можете воспользоваться командой takeown, однако она не позволяет установить владельца на другого пользователя. Вместо этого вы можете использовать команду icacls для прямого назначения владельца. Тем не менее, команда /setowner требует прав администратора.

    Выполните следующую команду:

    icacls C:\путь\к\папке /setowner "DOM\пользователь" /t /l

    Параметр /t используется для рекурсивного применения команды ко всем подкаталогам и файлам внутри выбранной папки, а /l указывает, что операция должна применяться к символическим ссылкам.

  4. Проверка:
    После выполнения команд проверьте, стал ли целевой пользователь владельцем. Это можно сделать с помощью команды:

    icacls C:\путь\к\папке

    В выводе должно отображаться имя нового владельца.

Заключение

Изменение владельца файлов и папок в Windows требует администраторских прав и внимательного управления правами доступа. Использую команды icacls, вы можете эффективно управлять правами доступа и назначать владельцев рекурсивно. Если у вас нет возможности предоставить пользователю права администратора или не хотите делиться паролем с ним, использование icacls — оптимальное решение.

Помните, что правильное управление правами доступа и владением критически важно для безопасности системы.

Оцените материал
Добавить комментарий

Капча загружается...