Answers:
从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
=容器继承-此标志指示从属容器将继承此ACE。OI
=对象继承-此标志指示从属文件将继承ACE。/T
=递归地应用于现有文件和子文件夹。(OI
并且CI
仅适用于新文件和子文件夹)。信用:@AlexSpence发表评论。C:\>icacls "D:\test" /grant "John:(OI)(CI)F" /T
您也可以使用ICACLS。
授予用户组对文件夹的完全控制权限:
>icacls "C:\MyFolder" /grant Users:F
授予IIS用户“ 修改”权限C:\MyFolder
(如果需要,IIS可以将文件读/写到特定文件夹中):
>icacls "C:\MyFolder" /grant IIS_IUSRS:M
如果您做ICACLS /?您将能够看到所有可用选项。
cacls
一点已经消失,使用icacls甚至是更多的理由。
/grant Users:(OI)(CI)F
使用
Users
用其他东西代替还是否?根据icacls "C:\MyFolder" /grant Users:F
打开命令提示符,然后执行以下命令:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
F
提供完全访问权限。
/q /c /t
将权限应用于子文件夹。
注意:有时“以管理员身份运行”会有所帮助。
使用cacls
命令。在这里查看信息。
CACLS文件/ e / p {USERNAME}:{PERMISSION}
哪里,
/ p:设置新权限
/ e:编辑权限并保留旧的权限,即编辑ACL而不是替换它。
{USERNAME}:用户名
{PERMISSION}:权限可以是:
R-读取
W-写
C-更改(写)
F-完全控制
例如,使用以下命令(在Windows命令提示符下键入)授予Rocky Full(F)控件:
C:> CACLS文件/ e / p rocky:f
通过键入以下命令阅读完整的帮助:
C:> cacls /?
cmd.exe
不建议弃用,也不太可能这样做,因此根本不赞成这样做,icacls
相反。
损坏的权限:重新获得对文件夹及其子对象的访问权限
尽管大多数回复该问题的答案都有其优点,但恕我直言,它们都没有提供完整的解决方案。如果您由于损坏的权限设置而无法锁定文件夹,则以下(可能是)Windows 7的完美解决方案:
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
对于Windows 10,必须在以下/remove:d
选项后指定用户/ SID :
icacls "c:\folder" /remove:d Everyone /grant:r Everyone:(OI)(CI)F /T
。
注意事项:
该命令将应用于指定目录。
指定用户“每个人”设置了最大可能的权限,因为它包括每个可能的用户。
选项“ / remove:d”删除可能存在的任何明确的DENY设置,因为这些设置将覆盖明确的ALLOW设置:创建新ALLOW设置的必要前提。这仅是一种预防措施,因为通常没有DENY设置,但是比后悔更安全。
选项“ / grant”创建一个新的ALLOW设置,一个显式权限替换(“:r”)可能存在的任何和所有显式ALLOW设置。
“ F”参数(即创建的权限)使它具有FULL控制权。
“ / T”参数添加递归,将这些更改应用于指定目录中的所有当前子对象(即文件和子文件夹)以及文件夹本身。
参数“(OI)”和“(CI)”也添加了递归,将这些更改应用于随后创建的子对象。
。
增编(2019/02/10) -
在Windows 10的命令行上面今天好心建议我,所以在这儿呢。我还没有Windows 10对其进行测试,但是如果有请尝试一下(然后请在下面发表评论)。
更改仅涉及删除DENY设置作为第一步。可能没有任何DENY设置,因此该选项可能没有任何区别。我的理解是,在Windows 7上,无需在/ remove:d之后指定用户,但是我对此可能是错的!
。
增编(2019/11/21) -
astark用户建议用* S-1-1-0 代替Everyone,以使命令独立于语言。我只有英文安装的Windows,因此无法测试该建议,但这似乎是合理的。
Invalid parameter "/remove:d"
我这个挣扎了一会儿,只有结合在这个线程的答案为我工作(在Windows 10):
1.打开在cmd或PowerShell和转到文件夹与文件
2. takeown / R / F 。
3. icacls * / T / grant dan:F
祝好运!
使用Excel vba脚本配置和创建帐户。我需要向该工具使用我们的管理员“ x”帐户向新用户创建的文件夹和子文件夹授予完全权限。
cacls看起来像这样:cacls \ FileServer \ Users \ Username / e / g Domain \ Username:C
我需要将此代码迁移到Windows 7及更高版本。我的解决方案结果是:
icacls \ FileServer \ Users \ Username / grant:r域\ Username:(OI)(CI)F / t
/ grant:r-授予指定的用户访问权限。权限替换了以前授予的显式权限。如果没有:r,权限将添加到任何先前授予的显式权限中
(OI)(CI)-此文件夹,子文件夹和文件。
F-完全访问
/ t-遍历所有子文件夹以匹配文件/目录。
这给了我一个服务器上的文件夹,用户只能看到该文件夹并创建子文件夹,以便他们可以读写文件。以及创建新文件夹。
XCACLS.VBS是一个非常强大的脚本,它将更改/编辑ACL信息。c:\ windows \ system32 \ cscript.exe xcacls.vbs帮助返回所有开关和选项。
您可以从Microsoft支持页面获得官方发行版
XCACLS.VBS
?
通过使用以下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文件中创建相同的域用户名,否则会出现权限问题
坎林·达里(CălinDarie)
我有很多脚本可以使用cacls,但是我却将它们移至icacls,但是我却找不到脚本来更改根挂载卷示例:d:\ datafolder。我最终创建了以下脚本,该脚本将卷安装为临时驱动器,然后应用sec。然后卸载它。这是我发现可以更新根安装安全性的唯一方法。
1将文件夹安装GUID转换为临时文件,然后读取GUID以将其作为临时驱动器X装入该卷:应用sec并记录更改,然后仅从X:驱动器卸载该卷,因此装入的文件夹不会被更改或中断然后应用秒。
这是我的脚本示例:
**mountvol "d:\%1" /L >tempDrive.temp && FOR /f "tokens=*" %%I IN (tempDrive.temp) DO mountvol X: %%I
D:\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**
这对我有用:
手动打开拒绝访问的文件夹。
在该文件夹中选择“可执行文件/应用程序”文件。
右键单击它,然后转到Properties->Compatibility
现在查看Privilege Level并检查Run As Administrator
点击Change Settings for all users。
现在问题已解决。