Время от времени я сталкиваюсь с файлом, владельцем которого мне нужно стать. Я обычно использую cacls
для изменения разрешений ntfs, но, похоже, не владеет. Под * nix я бы запустил что-то вроде chown me:me <file>
. Есть ли окна, эквивалентные chown
?
Вы ищете "TAKEOWN.EXE", который был первым в Windows Server 2003 в качестве стандартного компонента, и я считаю, что это был элемент из набора ресурсов раньше. Он доступен в Windows 7 и, возможно, в более новых системах.
takeown /f <some-file-or-folder> /r
/r
выполняет операцию рекурсивно для всех дочерних элементов указанной папки. в отличие subinacl
, вы должны войти в систему как пользователь, которому вы пытаетесь стать владельцем; или вы можете просто назначить право собственности на группу «Администраторы».
Вот копия его документации, которая сохранилась на SS64:
Синтаксис TAKEOWN [/ s Компьютер [/ u [Домен] Имя пользователя [/ p [Пароль]]]] / f Имя файла [/ a] [/ r [/ d {Y | N}]]
Ключ / ы Компьютер Имя или IP-адрес удаленного компьютера (не используйте обратную косую черту). по умолчанию = локальный компьютер. Этот параметр применяется ко всем файлам и папкам, указанным в команде.
/ u [Домен] Имя пользователя Запустить сценарий с разрешениями указанной учетной записи пользователя. по умолчанию = системные разрешения.
/ p [Пароль] Пароль учетной записи пользователя, указанной в параметре / u.
/ f FileName Имя файла, UNC-путь или шаблон имени каталога. Принимает подстановочный знак *
/ a Передать право собственности группе администраторов вместо текущего пользователя.
/ r Выполняет рекурсивную операцию со всеми файлами в указанном каталоге и подкаталогах.
/ d {Y | N} Подавить запрос подтверждения, который отображается, когда текущий пользователь не имеет разрешения «Список папок» для указанного каталога, и вместо этого использовать значение по умолчанию: Y: стать владельцем каталога. N: пропустить каталог. Обратите внимание, что вы должны использовать этот параметр вместе с параметром / r. Если параметр / a не указан, право собственности на файл предоставляется пользователю, который в данный момент вошел в систему на компьютере.
Смешанные шаблоны с использованием (? И *) не поддерживаются командой takeown.
После смены владельца файла / папки вы можете назначить полные права для файлов и впоследствии прочитать или удалить их.
субинакл это мощный инструмент системного администратора Windows для выполнения всего, что связано с владением и списками контроля доступа. Вы можете передать право собственности кому угодно, кроме вас (вы не можете сделать это с помощью графического интерфейса).
subinacl /file test.txt /setowner=domain\foo
Это позволяет вам установить разрешение для любого пользователя, который вам нравится, без необходимости быть администратором (как я считаю, требуется takeown.exe).
Получите право собственности и полные права на папку и все внутри:
takeown /F somedir /A /R
icacls somedir /grant:r User:F /T
Убедись в запустите командную строку от имени администратора!
Мне пришлось запустить командную строку как администратор, у меня она работала в Windows 8.1. Из-за неудобства Windows 8.1 мне пришлось искать «команда», щелкнув правой кнопкой мыши значок командной строки. Для меня, чтобы увидеть вариант «Запуск от имени администратора». У меня была командная строка, закрепленная на моей панели задач, но щелчок правой кнопкой мыши по ней не отображал параметр «Запуск от имени администратора».
В Windows 10 «Запуск от имени администратора» должен быть доступен по щелчку правой кнопкой мыши.
Синтаксис Takeown:
takeown [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] /f <File name> [/a] [/r [/d {Y|N}]]
Синтаксис Icacls:
icacls <FileName>[/GRANT [: r] <Sid>: <Perm> [...]] [/ Denegar <Sid>: <Perm> [...]] [/Remove [:g|:d]] <Sid> [...]] [/ t] [/ c] [/ l] [/ q] [/ setintegritylevel <Level>: <Policy> [...]]Icacls <Directory>[/ sustituir <SidOld><SidNew>[...]] [/ restore <ACLfile>[/ c] [/ l] [/q]]
Я знаю, что это действительно старый пост, но есть способ, встроенный в Windows 7 и новее (может быть в Windows Vista, но я не уверен). Выполните следующее из расширенной командной строки в папке, которую вы хотите сбросить. /t
говорит icacls
чтобы выполнить операцию рекурсивно.
icacls .\* /setowner %UserDomain%\%UserName% /t
icacls .\* /reset /t
Первая команда сбрасывает владельца, который когда-либо входил в систему через переменные среды. Конечно, вместо этого можно использовать конкретное имя.
Затем вторая команда принудительно передает разрешения вниз по дереву всем дочерним папкам и файлам.
Надеюсь, это поможет кому-то в будущем.
Вы можете взглянуть на SetACL, швейцарский армейский нож управления разрешениями. Вот пример о том, как назначить права собственности на все файлы на диске C: «Администраторам» и снять защиту от наследования со всех дочерних объектов за один раз:
SetACL.exe -on "C:\\" -ot file -actn setprot
-op "dacl:np;sacl:nc"
-rec cont_obj
-actn setowner -ownr "n:S-1-5-32-544;s:y"
Вы также можете добавить -silent
.
В Windows Server 2003 R2 (и более поздних версиях) вы можете воспользоваться встроенным инструментом icacls.exe для смены владельца из командной строки, а также для всех традиционных манипуляций cacls.exe, на которые он распространяется ...
Обратите внимание, что icacls.exe по умолчанию находится в режиме «редактирования», а cacls.exe - в режиме «замены» - долгожданное изменение для тех из нас, кого укусил (более одного раза) этот маленький нюанс cacls!
Для Windows 2003, 2008 или Vista или 7 используйте Вынос.
Для Windows 2000 используйте Fileowners.pl.
Другая альтернатива - fileacl Он небольшой и может устанавливать / снимать флаг «наследовать / не наследовать» для объекта, в отличие от большинства утилит Windows.
Я нашел решение с помощью инструментов Windows: cacls
cacls <file or directory> /E /T /G <user>:F
takeown /f *.jpg
icacls *.jpg /grant "Everyone":F
(обратите внимание, что в неанглоязычной Windows "Все" может не существовать, например, в немецкой Windows она работает только с "Jeder" - настоящий облом, что Windows переводит параметры команд!)