Як взяти право власності на файли з командного рядка?


34

Кожен так часто натрапляю на файл, над яким мені потрібно взяти право власності. Я зазвичай використовую caclsдля зміни дозволів ntfs, але це, здається, не має права власності. Під * nix я би запустив щось подібне chown me:me <file>. Чи є вікна, еквівалентні chown?


занадто поганий setACL не працює з вищевказаним сценарієм. повідомлення про помилки у програмі Win XP, 7 та 8, і вам потрібно бути провайдером, щоб знайти що з цим не так

Відповіді:


25

subinacl - це електроінструмент системи sysadmin для роботи з Windows, щоб зробити все, що стосується власності та ACL. Ви можете змінити право власності на будь-кого, крім вас ( ви не можете цього зробити з графічним інтерфейсом ).

subinacl /file test.txt /setowner=domain\foo

Це дозволяє встановити дозвіл будь-якому користувачеві, який вам подобається, без необхідності бути адміністратором (як я вважаю, вимагає takeown.exe).


Неправильно для windows xp Чи можна завантажити SUBINACL.exe (комплект ресурсів Windows 2003) і використовувати його в Windows XP?
Кікенет

Впевнені, що зможете! Ось, мабуть, звідки я і взяв. Спробуйте тут .
крб

26

Ви шукаєте "TAKEOWN.EXE", який був вперше в Windows Server 2003 як стандартний компонент, і я вважаю, що елемент набору ресурсів раніше. Він доступний у Windows 7 та, можливо, новіших системах.

takeown /f <some-file-or-folder> /r

/rвиконує операцію рекурсивно на всіх дітей зазначеної папки. На відміну від цього subinacl, ви повинні увійти як користувач, з яким ви намагаєтеся взяти на себе право власності; або, ви можете просто призначити право власності на групу "Адміністратори".

Ось копія його документації, що зберігається на SS64 :

Синтаксис TAKEOWN [/ s Computer [/ u [Domain] UserName [/ p [Password]]]] / f FileName [/ a] [/ r [/ d {Y | N}]]

Key / s Computer (Ім'я або IP-адреса віддаленого комп’ютера (не використовуйте зворотні косої риски). за замовчуванням = локальний комп'ютер. Цей параметр застосовується до всіх файлів і папок, зазначених у команді.

/ u [Домен] UserName Запустіть скрипт з дозволами вказаного облікового запису користувача. default = системні дозволи.

/ p [Пароль] Пароль облікового запису користувача, який вказаний у параметрі / u.

/ f FileName Ім'я файлу, шлях UNC або ім'я каталогу. Приймає символ підстановки *

/ a Надайте право власності на групу адміністраторів замість поточного користувача.

/ r Виконайте рекурсивну операцію для всіх файлів у вказаному каталозі та підкаталогах.

/ д {Y | N} Пригнічіть запит на підтвердження, який відображається, коли поточний користувач не має дозволу "Папка списку" у вказаному каталозі, а замість цього використовуйте значення за замовчуванням: Y: Візьміть право власності на каталог. N: Пропустити каталог. Зауважте, що ви повинні використовувати цю опцію спільно з параметром / r. Якщо параметр / не вказаний, право власності на файл надається користувачеві, який зараз увійшов до комп'ютера.

Змішані шаблони, що використовують (? І *), не підтримуються командою takeown.

Після зміни власника файлу / папки ви можете призначити файлам повні дозволи та згодом їх прочитати чи видалити.



SS64 Має кращу посилання на документацію: ss64.com/nt/takeown.html
jpaugh

17

Отримайте право власності та повні права на папку та все, що знаходиться всередині:

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]]

Icacls Reference .


1
Майте на увазі, що icacls задихається від довгих імен. Повідомлення про помилку "файл не знайдено" трохи вводить в оману, гірший icalcs перериває обробку решти дерева без повідомлення. Ви можете використовувати хитрість створення об'єму SUBST глибше в дереві, щоб іноді обійти це. Takeown.exe не терпить довгих імен.
Ендрю Деннісон

Не
вірно

8

Я знаю, що це справді стара публікація, але є спосіб, вбудований в Windows 7 і новіші (можливо, в Windows Vista, але я не впевнений). Виконайте наступне з ескалаційного командного рядка в папці, яку потрібно скинути. /tповідомляє icaclsвиконувати операцію рекурсивно.

icacls .\* /setowner %UserDomain%\%UserName% /t
icacls .\* /reset /t

Перша команда скидає власника до того, хто колись увійшов через змінні середовища. Звичайно, замість цього можна використовувати конкретне ім’я.

Потім друга команда змушує дозволи бути повторно введені вниз по дереву до всіх дочірніх папок і файлів.

Сподіваюся, це допоможе комусь у майбутньому.


Першої команди мені було достатньо.
Бенуа Бланшон

6

Ви можете поглянути на 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.


3

У Windows Server 2003 R2 (і пізніших версіях) ви можете скористатися вбудованим інструментом icacls.exe для зміни власності з командного рядка, а також усіх традиційних маніпуляцій cacls.exe, за допомогою яких він розширюється ...

Зауважте, що icacls.exe за замовчуванням переходить у режим "редагування", а cacls.exe за замовчуванням - "замінити" - це бажана зміна для тих, хто нас покусав (не раз) тим маленьким нюансом кака!


icacls хороший тим, що він включений в останні версії Windows та дозволяє присвоїти право власності будь-якому користувачеві.
Девід


1

Іншою альтернативою є fileacl Він невеликий і може встановити / вимкнути прапор "спадкувати / не успадкувати" на об'єкті, на відміну від більшості утиліт Windows.



0
  1. відкрити командний рядок як користувача адміністратора та перейти на проблемний каталог
  2. взяти право власності на всі файли там ... наприклад: takeown /f *.jpg
  3. надайте права доступу користувачам на ваш вибір ... Приклад: icacls *.jpg /grant "Everyone":F(зауважте, що в не-англійській Windows "Усі" можуть не існувати, наприклад, у німецькій Windows він працює лише з "Jeder" - справжній об'єм, що Windows переводить параметри команд!)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.