如何在Windows中使用命令行将权限授予用户?
如何使用Windows命令行将权限授予目录上的用户(读取,写入,修改)?
从Vista开始, cacls已经被弃用了。 以下是第一对帮助热线: 
 C:\>cacls NOTE: Cacls is now deprecated, please use Icacls. Displays or modifies access control lists (ACLs) of files 
 你应该使用icacls代替。 这是你如何授予John完全控制D:\test文件夹及其所有子文件夹: 
 C:\>icacls "D:\test" /grant John:(OI)(CI)F /T 
根据MS文件:
-   F=完全控制
-   CI=容器inheritance – 此标志指示从属容器将inheritance此ACE。
-   OI= Object Inherit – 该标志表示从属文件将inheritanceACE。
-   /T=recursion地应用于现有的文件和子文件夹。 (OI和CI仅适用于新文件和子文件夹)。 信用评论:@AlexSpence。
 有关完整的文档,您可以运行“ icacls ”而不带任何参数,或者在这里和这里查看Microsoft文档 
你也可以使用ICACLS。
将用户组完全控制权授予文件夹:
 >icacls "C:\MyFolder" /grant Users:F 
 为C:\MyFolder IIS用户授予修改权限(如果您需要您的IIS能够将R / W文件放入特定文件夹): 
 >icacls "C:\MyFolder" /grant IIS_IUSRS:M 
如果你做ICACLS /? 你将能够看到所有可用的选项。
 使用cacls命令。  在这里看到信息。 
CACLS档案/ e / p {使用者名称]:{PERMISSION}
哪里,
/ p:设置新的权限
/ e:编辑权限,并保持原来的权限,即编辑ACL而不是replace它。
{USERNAME}:用户名称
{PERMISSION}:权限可以是:
R – 阅读
写 – 写
C – 更改(写入)
F – 完全控制
例如,使用以下命令(在Windows命令提示符下键入)授予Rocky Full(F)控件:
C:> CACLS文件/ e / p rocky:f
通过input以下命令阅读完整的帮助:
C:> cacls /?
打开一个命令提示符,然后执行这个命令:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
  F给予完全访问权限。 
  /q /c /t将权限应用于子文件夹。 
注意:有时“以pipe理员身份运行”将有所帮助。
 我尝试下面的方式,它为我工作: 
  1.打开cmd.exe 
  2. takeown /R /F *.* 
  3. icacls * /T /grant [username]:(D) 
  4. del *.* /S /Q 
所以这些文件可以成为我自己的访问,它分配给“删除”,然后我可以删除文件和文件夹。
使用Excel vba脚本来configuration和创build帐户。 我需要授予对我们的新用户使用我们的pipe理员“x”帐户由该工具创build的文件夹和子文件夹的完整权限权限。
cacls看起来像这样:cacls \ FileServer \ Users \ Username / e / g Domain \ Username:C
我需要将此代码迁移到Windows 7及更高版本。 我的解决scheme竟然是:
icacls \ FileServer \ Users \ Username / grant:r Domain \ Username:(OI)(CI)F / t
/ grant:r – 授予指定的用户访问权限。 权限replace以前授予的显式权限。 没有:r,权限被添加到任何以前授予的显式权限
(OI)(CI) – 此文件夹,子文件夹和文件。
F – 完全访问
/ t – 遍历所有子文件夹以匹配文件/目录。
这给了我一个服务器上的文件夹,用户只能看到该文件夹并创build子文件夹,他们可以读取和写入文件。 以及创build新的文件夹。
以防万一在这个页面上有其他人绊倒了,如果你想在一个命令中将不同的权限串在一起,我使用了这个:
 icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX) 
请注意各种权限的csvstring。
 我苦苦了一阵子,只有在这个线程(在Windows 10上)合作的答案: 
  1.打开cmd或PowerShell并转到包含文件的文件夹 
  2. takeown / R / F。 
  3. icacls * / T / grant dan:F 
祝你好运!
XCACLS.VBS是一个非常强大的脚本,将改变/编辑ACL信息。 c:\ windows \ system32 \ cscript.exe xcacls.vbs帮助返回所有开关和选项。
您可以从Microsoft支持页面获得官方发布
批量文件夹创build和授予权限使用下面的PowerShell脚本。
Import-Csv“D:\ Scripts \ foldernames.csv”| foreach-object {$ username = $ _。foldername
 # foldername is the header of csv file $domain = “example.com” $folder= "D:\Users" $domainusername = $domain+“\”+$username New-Item $folder\$username –Type Directory Get-Acl $folder\$username $acl = Get-Acl $folder\$username $acl.SetAccessRuleProtection($True, $False) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("SYSTEM","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$domain\Domain Admins","Read", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($domainusername,"Modify", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) Set-Acl $folder\$username $acl 
}
注意:您必须在csv文件中创build相同的域用户名,否则您将获得权限问题
 attrib +r +a +s +h <folder name> <file name> to hide attrib -r -a -s -h <folder name> <file name> to unhide 
优秀点CălinDarie
我有很多脚本来使用cacls我将它们移动到icacls我怎么也找不到一个脚本来更改根挂载卷示例:d:\ datafolder。 我终于把这个脚本写成了下面的脚本,把这个卷挂载到一个临时驱动器上,然后应用sec。 然后卸载它。 这是唯一的方法,我发现你可以更新根安装的安全性。
1将文件夹装入GUID到临时文件,然后读取GUID以将卷装载为临时驱动器X:应用秒并logging更改,然后仅从X:驱动器卸载卷,以便装入的文件夹不被更改或中断然后应用秒。
这里是我的脚本的示例:
 **mountvol "d:\%1" /L >tempDrive.temp && FOR /f "tokens=*" %%I IN (tempDrive.temp) DO mountvol X: %%ID:\tools\security\icacls.exe %~2 /grant domain\group:(OI)(CI)F /T /C >>%~1LUNsec-%TDWEEK%-%TMONTH%-%TDAY%-%TYEAR%-%THOUR%-%TMINUTE%-%TAM%.txt if exist x:\*.* mountvol X: /d** 
 我是pipe理员,一些脚本放在我的名字上的“拒绝”权限在目录中的所有文件和子文件夹。 执行icacls "D:\test" /grant John:(OI)(CI)F /T命令不起作用,因为它似乎并没有从这个列表中删除我的名字中的“Deny”权限。 
 唯一对我icacls "D:\test" /reset /T是使用icacls "D:\test" /reset /T命令重置所有权限。 
这对我来说是有效的:
- 
手动打开访问被拒绝的文件夹。 
- 
select该文件夹中的可执行文件/应用程序文件。 
- 
右键单击它并转到“ 属性” – >“ 兼容性” 
- 
现在查看权限级别并检查它是否以pipe理员身份运行 
- 
点击所有用户的更改设置 。 
现在问题解决了。