首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >icacls替换权限驱动器root

icacls替换权限驱动器root
EN

Stack Overflow用户
提问于 2017-01-13 21:33:55
回答 1查看 2.9K关注 0票数 2

我正在Windows2012 R2上操作,试图使用一个批处理文件来使用icacls来管理我的NTFS。批处理文件几乎完成,然后我将把它交给一个经验少得多的人管理,所以我试图使它对他尽可能容易。

我想自动替换驱动器根(E:)上的所有perms,以防它们被修改。整个驱动器将恢复到已知的配置。然后,我将在根设置一些烫发(管理员,备份等)。它将通过继承传播到所有子目录。(这两个操作可能是相同的icacls调用)有许多子目录,每个子目录都将应用不同的权限。我已经完成了批处理文件的子目录部分并成功了。

我无法使用icacls替换驱动器根上的所有权限。我试过:

代码语言:javascript
复制
ICACLS.EXE "E:" /inheritance:r /grant:r "Administrators":(OI)(CI)F /T /Q

代码语言:javascript
复制
ICACLS.EXE "E:" /grant:r "Administrators":(OI)(CI)F /T /Q

都没有成功。为了进行测试,我添加了另一个访问E:的组。在批处理文件成功执行到完成后,该其他组仍然可以访问;它没有从E:的ACL中删除。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-01-20 20:36:13

哈,有意思..。看起来,ICACLS很难简单地替换所有权限。

因此,第一步是使用TAKEOWN从TrustedInstaller更改所有者(并取消您的UAC保证)。

然后CACLS C:\ /g内置\管理员:F

您也可以使用ICACLS /restore进行此操作,但这需要您准备一个ACL文件。ACL文件中有文件的名称,这使得创建文件更加烦人。

简单的BAT文件来做这件事。

注: ICACLS真的很挑剔:

  • ACLFile似乎需要UTF-16。
  • ACLFile在其中指定了文件,并且名称相对于icacls命令行上给出的路径。
  • icacls命令行上的文件夹名也不能有尾随"\“。
代码语言:javascript
复制
@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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41643786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档