我正在Windows2012 R2上操作,试图使用一个批处理文件来使用icacls来管理我的NTFS。批处理文件几乎完成,然后我将把它交给一个经验少得多的人管理,所以我试图使它对他尽可能容易。
我想自动替换驱动器根(E:)上的所有perms,以防它们被修改。整个驱动器将恢复到已知的配置。然后,我将在根设置一些烫发(管理员,备份等)。它将通过继承传播到所有子目录。(这两个操作可能是相同的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:的组。在批处理文件成功执行到完成后,该其他组仍然可以访问;它没有从E:的ACL中删除。
有什么想法吗?
发布于 2017-01-20 20:36:13
哈,有意思..。看起来,ICACLS很难简单地替换所有权限。
因此,第一步是使用TAKEOWN从TrustedInstaller更改所有者(并取消您的UAC保证)。
然后CACLS C:\ /g内置\管理员:F
您也可以使用ICACLS /restore进行此操作,但这需要您准备一个ACL文件。ACL文件中有文件的名称,这使得创建文件更加烦人。
简单的BAT文件来做这件事。
注: 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.txthttps://stackoverflow.com/questions/41643786
复制相似问题