首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用icacls.exe替换权限

用icacls.exe替换权限
EN

Stack Overflow用户
提问于 2017-09-02 16:41:17
回答 1查看 1.7K关注 0票数 0

我们有很多具有以下权限的文件夹:

代码语言:javascript
复制
PS C:\> icacls.exe C:\Temp\Test
C:\Temp\Test    BUILTIN\Administrators:(OI)(CI)(F)
                NT AUTHORITY\SYSTEM:(OI)(CI)(F)
                DOMAIN\USER:(OI)(IO)(RX)
                DOMAIN\USER:(CI)(RX) 

我们希望将DOMAIN\USER的两个权限替换为(OI)(CI)(RX)

为了达到这个目的,我们使用了icacls.exe /grant:r。不幸的是,:r参数不能工作。

代码语言:javascript
复制
PS C:\> icacls.exe --% C:\Temp\Test /grant:r DOMAIN\USER:(OI)(CI)(RX)
PS C:\> icacls.exe C:\Temp\Test
C:\Temp\Test    BUILTIN\Administrators:(OI)(CI)(F)
                NT AUTHORITY\SYSTEM:(OI)(CI)(F)
                DOMAIN\USER:(OI)(IO)(RX)
                DOMAIN\USER:(CI)(RX)
                DOMAIN\USER:(OI)(CI)(F)

如您所见,权限是添加的,而不是替换的。有办法用icacls.exe替换权限吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-04 09:20:02

cacls.exe提供参数/P来实现替换(请看这里)。

代码语言:javascript
复制
cacls.exe C:\Temp\Test /E /P DOMAIN\USER:F

这个可以工作,但后来我在特殊权限(DOMAIN\USER2:(OI)(CI)(IO)(M))上苦苦挣扎。

因此,我编写了一些PowerShell代码来实现与icacls.exe相同的功能。

在授予新的显式权限之前,旧权限将使用/remove:g删除。

代码语言:javascript
复制
$FolderPath = 'C:\Temp\Test'
$NewPermission = @('DOMAIN\USER1:(OI)(CI)(F)', 'DOMAIN\USER2:(OI)(CI)(RX,W)', 'DOMAIN\USER2:(OI)(CI)(IO)(M)')

$IcaclsOutput = icacls.exe "$FolderPath"
$InheritedPermission = @()
$InheritedPermission = foreach ($Line in $IcaclsOutput)
{
    #Check if last line
    if ($Line -eq '')
    {
        break
    }

    #Get inherited permissions
    $Permission = ''
    $Permission = $Line.Substring($FolderPath.Length + 1, $Line.Length - ($FolderPath.Length + 1))
    if ($Permission -notlike '*(I)*')
    {
        $Permission.Split(':')[0]
    }
}

$InheritedPermission = $InheritedPermission | Sort-Object -Unique

#Set new permission
if ($InheritedPermission.Count -ne 0)
{
    #Remove granted explicit permissions and add new on 
    icacls.exe "$FolderPath " /remove:g ($InheritedPermission) /grant:r ($NewPermission)
}
else
{
    #Add new one
    icacls.exe "$FolderPath " /grant:r ($NewPermission)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46015975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档