如何使用Windows命令行向目录上的用户授予权限(读取,写入,修改)?
答案 0 :(得分:361)
从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
= Container Inherit - 此标志表示从属容器将继承此ACE。OI
= Object Inherit - 此标志表示从属文件将继承ACE。/T
=递归应用于现有文件和子文件夹。 (OI
和CI
仅适用于新文件和子文件夹)。信用:@AlexSpence评论。答案 1 :(得分:69)
您也可以使用ICACLS。
将用户组完全控制授予文件夹:
>icacls "C:\MyFolder" /grant Users:F
向C:\MyFolder
的IIS用户授予修改权限(如果您需要IIS能够将R / W文件存入特定文件夹):
>icacls "C:\MyFolder" /grant IIS_IUSRS:M
如果您执行 ICACLS /?,您将能够看到所有可用选项。
答案 2 :(得分:18)
使用cacls
命令。请参阅信息here。
CACLS files / e / p {USERNAME}:{PERMISSION}
其中,
/ p:设置新权限
/ e:编辑权限并保留旧权限,即编辑ACL而不是替换它。
{USERNAME}:用户名
{PERMISSION}:许可可以是:
R - 阅读
W - 写
C - 改变(写)
F - 完全控制
例如,使用以下命令授予Rocky Full(F)控制权(在Windows命令提示符下键入):
C:> CACLS文件/ e / p rocky:f
输入以下命令阅读完整的帮助:
C:> cacls /?
答案 3 :(得分:18)
打开命令提示符,然后执行以下命令:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
F
提供完全访问权限。
/q /c /t
将权限应用于子文件夹。
注意:有时“以管理员身份运行”会有所帮助。
答案 4 :(得分:11)
我尝试以下方式,它对我有用:
1.打开cmd.exe
2. takeown /R /F *.*
3. icacls * /T /grant [username]:(D)
4. del *.* /S /Q
这样文件就可以成为我自己的访问权限并分配给“删除”,然后我可以删除文件和文件夹。
答案 5 :(得分:5)
损坏的权限:重新获得对文件夹及其子对象的访问
虽然回答问题时回复的大多数答案都有一些优点,但IMHO都没有提供完整的解决方案。以下(可能是) 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)"参数还添加递归,将这些更改应用于随后创建的子对象 。
ADDENDUM(2019/02/10) -
今天向我推荐了Windows 10命令行 ,所以在这里。我还没有通过Windows 10对其进行测试,但是如果你有,请尝试一下(然后请你发表评论)。
此更改仅涉及删除DENY设置作为第一步。可能没有任何DENY设置存在,因此该选项可能没有任何区别。我的理解是,在Windows 7上,您不需要在 / remove:d 之后指定用户,但我可能错了!
答案 6 :(得分:4)
我在这方面挣扎了一段时间,只将这个帖子的答案结合起来(在Windows 10上):
1.打开cmd或PowerShell,然后转到包含文件
的文件夹
2. takeown / R / F 。
3. icacls * / T / grant dan:F
答案 7 :(得分:3)
万一有其他人在这个页面上绊倒,如果你想在一个命令中将各种权限串起来,我就用这个:
icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)
请注意各种权限的csv字符串。
答案 8 :(得分:2)
使用Excel vba脚本来配置和创建帐户。我需要授予该工具使用我们的管理员'x'帐户为我们的新用户创建的文件夹和子文件夹的完全权限。
cacls看起来像这样: cacls \ FileServer \ Users \ Username / e / g Domain \ Username:C
我需要将此代码迁移到Windows 7及更高版本。我的解决方案原来是:
icacls \ FileServer \ Users \ Username / grant:r Domain \ Username:(OI)(CI)F / t
/ grant:r - 授予指定的用户访问权限。权限替换以前授予的显式权限。如果没有:r,权限将添加到任何以前授予的显式权限
(OI)(CI) - 此文件夹,子文件夹和文件。
F - 完全访问
/ t - 遍历所有子文件夹以匹配文件/目录。
这给了我的是这个服务器上的一个文件夹,用户只能看到该文件夹并创建子文件夹,他们可以读写文件。以及创建新文件夹。
答案 9 :(得分:1)
XCACLS.VBS是一个非常强大的脚本,可以更改/编辑ACL信息。 c:\ windows \ system32 \ cscript.exe xcacls.vbs帮助返回所有开关和选项。
获得官方发布答案 10 :(得分:1)
批量文件夹创建和授予权限使用以下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文件中创建相同的域用户名,否则您将获得权限问题
答案 11 :(得分:0)
icacls . /grant John:(OI)(CI)F /T
,其中John是用户名仅添加此内容是因为这样做似乎极其简单,其他人可能会获利-所有功劳归于Călin Darie
。
答案 12 :(得分:0)
我是管理员,并且某些脚本在我的名字上对目录中的所有文件和子文件夹设置了“拒绝”权限。执行icacls "D:\test" /grant John:(OI)(CI)F /T
命令不起作用,因为它似乎没有从我的名单中删除此名单中的“拒绝”。
唯一对我有用的是使用icacls "D:\test" /reset /T
命令重置所有权限。
答案 13 :(得分:0)
优点CălinDarie
我有很多脚本要使用cacls我将它们移动到icacls 我怎么找不到更改根装载卷示例的脚本:d:\ datafolder。我最终创建了下面的脚本,它将卷安装为临时驱动器然后应用秒。然后卸下它。这是我发现您可以更新根安装安全性的唯一方法。
1获取文件夹挂载GUID到临时文件然后读取GUID以将卷装载为临时驱动器X:应用秒并记录更改然后仅从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**
答案 14 :(得分:0)
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
答案 15 :(得分:-1)
在Windows 10中,无需使用“ c:>”和“>”
例如:
F = Full Control
/e : Edit permission and kept old permission
/p : Set new permission
clcls“文件或文件夹路径” / e / p用户名:F
(这也可以修复错误2502和2503)
clcls“ C:\ Windows \ Temp” / e / p用户名:F
答案 16 :(得分:-4)
这对我有用:
手动打开拒绝访问的文件夹。
选择该文件夹中的可执行文件/应用程序文件。
右键单击它并转到属性 - &gt; 兼容性
现在查看权限级别并检查以管理员身份运行
点击更改所有用户的设置。
问题现在解决了。