2017-01-13 3 views
0

Я работаю на Windows 2012 R2, пытаясь использовать пакетный файл для управления моими файлами NTFS с помощью icacls. Пакетный файл почти завершен, тогда я передам его кому-то с гораздо меньшим опытом работы, поэтому я стараюсь сделать его максимально простым для него.icacls заменить разрешения root root

Я хочу автоматически ЗАМЕНИТЬ все пермы на корневом диске (E :), если они были изменены. Весь диск будет восстановлен до известной конфигурации. Затем я установлю несколько perms в корне (администратор, резервное копирование и т. Д.), Которые будут распространяться через наследование во все подкаталоги. (возможно, эти 2 операции являются одним и тем же вызовом icacls). Существует много подкаталогов, и к каждому из них будут применяться разные разрешения. У меня есть часть подкаталога командного файла, полная и успешная.

Я не смог использовать icacls для ЗАМЕНЫ всех разрешений для корня привода. Я пробовал:

ICACLS.EXE "E:" /inheritance:r /grant:r "Administrators":(OI)(CI)F /T /Q 

и

ICACLS.EXE "E:" /grant:r "Administrators":(OI)(CI)F /T /Q 

как не имели успеха. Для тестирования я добавил другую группу с доступом к E :. После успешного завершения пакетного файла эта другая группа все еще имела доступ; он не был удален из ACL E :.

Любые идеи?

+0

Кто является владельцем корневого каталога? «dir/q» не будет показывать владельца корня напрямую, но «dir» C: \ Program Files «/ q/ad» покажет его для «..» - корневой папки. Для меня это «Trusted installer», и я нашел другие папки с этим владельцем, где даже в качестве администратора я не могу использовать icacls. Я могу использовать takeown, однако, чтобы изменить владельца на buildin \ admisitrators – joeking

+0

Я взял (или присвоил?) Право собственности группе администраторов нашего домена, в основном, как вы указываете. Любопытно, когда я это сделаю, если вы просмотрите свойства >> Безопасность >> Дополнительно, это показывает, что «SYSTEM» является владельцем. Я предполагаю, что это эквивалентно.В любом случае, я могу взять на себя ответственность за любую удобную учетную запись. Моя проблема в том, что я не знаю, что призывает ICACLS сделать для достижения моей цели. – Derek

+0

Какая проблема остается? Как правило, корень диска будет принадлежать TrustedInstaller. Это виртуальный пользователь, созданный в Vista для UAC - в частности, чтобы даже администратор не мог изменять системные файлы. Из линии CMD «takeown/f C: \/A» должно изменить владельца на Builtin \ Administrators. Когда-то принадлежащий администратору, вы можете использовать ICACLS для изменения разрешений. После успеха TAKEOWN ICACLS все еще не работает? – joeking

ответ

0

Hah, interesting ... Похоже, что ICACLS затрудняет простое изменение всех разрешений.

Итак, первым шагом является использование TAKEOWN для изменения владельца из TrustedInstaller (и аннулирования гарантии UAC).

Тогда CACLS C: \/г BUILTIN \ администраторов: е

Вы также можете сделать это с помощью Icacls/восстановления, но требует, чтобы вы готовите файл ACL. Файл ACL имеет имена файлов в нем, что делает его более раздражающим для создания.

Простой файл BAT для этого.

Примечание: ICACLS действительно суетливая:

  • ACLFile, кажется, нужду быть UTF-16
  • ACLFile назвал файлы в нем, и имена по отношению к пути, указанному в командной строке icacls.
  • Имя папки в командной строке icacls не может иметь конечный «\» .

@echo off 
setlocal 

:: Change the ACL to "BUILTIN\Administrators:(OI)(CI)(F)"  
if exist aclfile.txt del aclfile.txt 

if "%1"=="" echo Requires a filename && exit /b 1 

:: The ACL file is required to be UTF-16 encoded. 
:: Use "icacls FILE /save ACLFILE.txt on a sample 
:: file to get the exact SDDL you want to use 
cmd /u /c echo %~n1 > aclfile.txt 
cmd /u /c echo D:P(A;OICI;FA;;;BA)>>aclfile.txt 

:: Ick, trim the trailing \ 
:: ICACLS is really dumb. 
set pathname=%~dp1 
set pathname=%pathname:~,-1% 
icacls "%pathname%" /restore aclfile.txt 
+0

Проблема в том, что флаг «/ C» отличается для CACLS и ICACLS. В CACLS он будет игнорировать только отказ в доступе к NTFS. (ICACLS игнорирует все ошибки). Все другие ошибки (в том числе длина пути к файлу слишком длинная, что у меня есть во многих местах) убивают команду CACLS на месте. Итак, CACLS оставил мой диск в неизвестном состоянии, только некоторые из них были установлены. Я не могу не чувствовать, что мне что-то не хватает, не так сложно использовать ICACLS, чтобы установить perms в корне диска. – Derek

+0

Невозможно для меня знать состояние вашего диска, но если вы пытаетесь заменить все разрешения на диске, тогда вам нужно сначала взломать все, takeown/f C: \/a/r/skipsl/dy, затем замените корневые разрешения и, наконец, «icacls/reset/t» для каждой вещи под root. Я не думаю, что вам что-то не хватает, ACL в Windows - настоящая боль. См. Исправления к файлу bat, указанному выше. – joeking

+0

Я полагаю, вы могли бы быть более избирательным в этом вопросе ... не брать на себя все права, но вместо этого сначала используйте ICACLS/reset/t, записывая ошибки. Затем забирайте только те предметы, которые не удались. Это имеет значение только в том случае, если вы хотите сохранить первоначальное владение файлами. – joeking

Смежные вопросы