首页 文章

如何使用Windows中的命令行为用户授予权限?

提问于
浏览
217

如何使用Windows命令行向目录上的用户授予权限(读取,写入,修改)?

15 回答

  • 2

    截至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 =递归应用于现有文件和子文件夹 . ( OICI 仅适用于新文件和子文件夹) . 信用:@AlexSpence发表评论 .

    有关完整文档,您可以运行没有参数的“ icacls ”或查看Microsoft文档herehere

  • 3

    您也可以使用ICACLS .

    要将 Users group Full Control 授予文件夹:

    >icacls "C:\MyFolder" /grant Users:F
    

    C:\MyFolder 的IIS用户授予 Modify 权限(如果您需要IIS能够将R / W文件存入特定文件夹):

    >icacls "C:\MyFolder" /grant IIS_IUSRS:M
    

    如果您执行 ICACLS /? ,您将能够看到所有可用选项 .

  • 0

    使用 cacls 命令 . 见信息here .

    CACLS文件/ e / p 其中,/ p:设置新权限/ e:编辑权限并保留旧权限,即编辑ACL而不是替换它 . :用户名:权限可以是:R - 读W - 写C - 更改(写)F - 完全控制例如使用以下命令授予Rocky Full(F)控制(在Windows命令提示符下键入) :C:> CACLS文件/ e / p rocky:f通过输入以下命令阅读完整的帮助:C:> cacls /?

  • 2

    打开命令提示符,然后执行以下命令:

    icacls“c:\ somelocation \ of \ path”/ q / c / t / grant用户:F

    F 提供完全访问权限 .

    /q /c /t 将权限应用于子文件夹 .

    注意:有时“以管理员身份运行”会有所帮助 .

  • -4

    我尝试以下方式,它适合我:
    1.打开 cmd.exe
    2. takeown /R /F *.*
    3. icacls * /T /grant [username]:(D)
    4. del *.* /S /Q

    这样文件就可以成为我自己的访问权限并分配给“删除”,然后我可以删除文件和文件夹 .

  • 13

    我挣扎了一段时间,只结合这个线程的答案为我工作(在Windows 10上):
    1.打开cmd或PowerShell,然后转到包含文件的文件夹
    2. takeown / R / F.
    3. icacls * / T / grant dan:F

    祝好运!

  • 1

    使用Excel vba脚本来配置和创建帐户 . 我需要使用我们的管理员'x'帐户向我们的新用户授予该工具创建的文件夹和子文件夹的完全权限 .

    cacls看起来像这样:cacls \ FileServer \ Users \ Username / e / g Domain \ Username:C

    我需要将此代码迁移到Windows 7及更高版本 . 我的解决方案原来是:

    icacls \ FileServer \ Users \ Username / grant:r域\用户名:(OI)(CI)F / t

    / grant:r - 授予指定的用户访问权限 . 权限替换以前授予的显式权限 . 如果没有:r,则会将权限添加到以前授予的任何显式权限

    (OI)(CI) - 此文件夹,子文件夹和文件 .

    F - 完全访问权限

    / t - 遍历所有子文件夹以匹配文件/目录 .

    这给了我的是这个服务器上的一个文件夹,用户只能看到该文件夹并创建了子文件夹,他们可以读写文件 . 以及创建新文件夹 .

  • 2

    为了防止其他人在这个页面上绊倒,如果你想在一个命令中将各种权限串起来,我使用了这个:

    icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)
    

    请注意各种权限的csv字符串 .

  • 10

    虽然回答这个问题的大部分答案都有一些优点,但IMHO都没有提供完整的解决方案 . 以下是一个完美的解决方案:

    icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
    

    笔记:

    • 该命令应用于指定的目录 .

    • 指定用户"Everyone"设置尽可能宽的权限,因为它包含每个可能的用户 .

    • 选项“/ remove:d”删除可能存在的任何显式DENY设置,因为这些设置会覆盖显式的ALLOW设置:创建新的ALLOW设置的必要预备 .

    • 选项“/ grant”创建一个新的ALLOW设置,一个显式权限替换(“:r”)任何和所有显式的ALLOW设置存在 .

    • “F”参数(即创建的权限)使其成为FULL控制的授权 .

    • "/T"参数添加递归,将这些更改应用于指定目录(即文件和子文件夹)中的所有当前子对象,以及文件夹本身 .

    • “(OI)”和“(CI)”参数还添加递归,将这些更改应用于将来创建的子对象 .

  • 1

    XCACLS.VBS是一个非常强大的脚本,可以更改/编辑ACL信息 . c:\ windows \ system32 \ cscript.exe xcacls.vbs帮助返回所有开关和选项 .

    你可以从Microsoft Support Page获得官方发布

  • 0

    批量文件夹创建和授予权限使用以下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文件中创建相同的域用户名,否则您将获得权限问题

  • 0
    attrib +r +a +s +h <folder name> <file name> to hide
    attrib -r -a -s -h <folder name> <file name> to unhide
    
  • 16

    优点CălinDarie

    我有很多脚本使用cacl我将它们移动到icacls我怎么都找不到一个脚本来更改root挂载卷示例: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**
    
  • 63

    我是管理员,一些脚本在我的名字上对目录中的所有文件和子文件夹放置了"Deny"权限 . 执行 icacls "D:\test" /grant John:(OI)(CI)F /T 命令不起作用,因为它似乎没有从此列表中删除我姓名中的"Deny"权限 .

    唯一对我有用的是使用 icacls "D:\test" /reset /T 命令重置所有权限 .

  • 336

    这对我有用:

    • 手动打开拒绝访问的文件夹 .

    • 选择该文件夹中的可执行文件/应用程序文件 .

    • 右键单击它,然后转到属性 - >兼容性

    • 现在查看权限级别并选中“以管理员身份运行”

    • 单击所有用户的更改设置 .

    问题现在解决了 .

相关问题