Назад | Перейти на главную страницу

Как стать владельцем файлов из командной строки?

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

Takeown Ссылка.

Синтаксис 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]]

icacls Ссылка.

Я знаю, что это действительно старый пост, но есть способ, встроенный в 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
  1. откройте командную строку от имени администратора и перейдите в проблемный каталог
  2. взять на себя ответственность за все файлы там ... пример: takeown /f *.jpg
  3. предоставить права доступа пользователям по вашему выбору ... пример: icacls *.jpg /grant "Everyone":F (обратите внимание, что в неанглоязычной Windows "Все" может не существовать, например, в немецкой Windows она работает только с "Jeder" - настоящий облом, что Windows переводит параметры команд!)