如何在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地应用于现有的文件和子文件夹。 ( OICI仅适用于新文件和子文件夹)。 信用评论:@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命令重置所有权限。

这对我来说是有效的:

  1. 手动打开访问被拒绝的文件夹。

  2. select该文件夹中的可执行文件/应用程序文件。

  3. 右键单击它并转到“ 属性” – >“ 兼容性”

  4. 现在查看权限级别并检查它是否以pipe理员身份运行

  5. 点击所有用户的更改设置

现在问题解决了。