none
列出win2003文件服务器NTFS权限清单 RRS feed

  • 问题

  •     winserver2003 r2 sp2 x64文件服务器,之前的网管对共享文件夹的NTFS权限设置比较乱,有些底层的子文件夹权限也有不对,我想把整个共享目录的NTFS权限导出到一个文件里,需要比较直观的以图形界面显示出来,然后反馈到各部门看各自的权限是否有问题,再针对不合理的权限一个个处理。
        目前已采用的办法有用icacls命令,将权限导出到一个txt文档,但是都是命令格式,需要大量的数据处理才能直观的像图形界面一样查看,非常不方便,不亚于去一个个子文件夹右击属性去查看。还有论坛里有看到用accesschk命令,但是中文的文件夹显示都是乱码,AccessEnum这个工具用下来显示效果是最好的,基本能达到需求,但是发现有bug,它不能显示每一个文件夹的权限,会丢失很大一部分文件夹。不知道有没有其他工具能达到我的需求,效果只要和accessenum一样就行,如下效果:

    "Path"                          "Read"                                                    "Write"                                               "Deny"
    "D:\Company_Data" "Administrators, TR\tang, TR\总经办" "Administrators, TR\tang, TR\总经办" ""

    2014年8月15日 7:22

答案

  • 你好!

    如果服务器是Windows Server 2003 R2,如果安装了Windows Powershell,那么你可以使用Powershell来完成相关操作:

    打开运行,并输入:Powershell.exe

    然后运行以下脚本,此脚本可以导出D:\所有文件的NTFS权限到txt文件:

    icacls d:\* |out-file d:\ntfs.txt

    Best Regards,

    Anna Wang

    2014年8月18日 8:53
    版主
  • 你可以直接使用原生命令實現

    cacls .\FOLDER /t /c /s > SDDL.txt
    icacls .\FOLDER /t /c > ACL.txt

    用原生命令推薦第一個,其將權限保存爲 SDDL 格式,雖然閱讀起來不便,但是可以用來還原大部分設置。

    powershell 的話,可以參考下面的代碼

    # Begin
    
    foreach ($obj in (get-childitem -Path .\FOLDER -Force -Recurse | get-acl)) 
    {
     '{0}|{1}' -f $($obj.path -replace '^Microsoft\.PowerShell\.Core\\FileSystem::', ''), $obj.sddl | out-file -encoding Default -append -FilePath .\SDDL.txt
    }
    
    # End

    該代碼類似於原生命令,但是其包括的 SDDL 更詳細, 並且完整路徑和 SDDL 使用絕對不允許用於目錄或文件名的管道字符 | 來分割,這樣方便以後的分離。


    Folding@Home


    • 已编辑 repl 2014年8月18日 12:33
    • 已标记为答案 AnnaWYModerator 2014年8月25日 10:50
    2014年8月18日 12:29

全部回复

  • 你好!

    如果服务器是Windows Server 2003 R2,如果安装了Windows Powershell,那么你可以使用Powershell来完成相关操作:

    打开运行,并输入:Powershell.exe

    然后运行以下脚本,此脚本可以导出D:\所有文件的NTFS权限到txt文件:

    icacls d:\* |out-file d:\ntfs.txt

    Best Regards,

    Anna Wang

    2014年8月18日 8:53
    版主
  • 你可以直接使用原生命令實現

    cacls .\FOLDER /t /c /s > SDDL.txt
    icacls .\FOLDER /t /c > ACL.txt

    用原生命令推薦第一個,其將權限保存爲 SDDL 格式,雖然閱讀起來不便,但是可以用來還原大部分設置。

    powershell 的話,可以參考下面的代碼

    # Begin
    
    foreach ($obj in (get-childitem -Path .\FOLDER -Force -Recurse | get-acl)) 
    {
     '{0}|{1}' -f $($obj.path -replace '^Microsoft\.PowerShell\.Core\\FileSystem::', ''), $obj.sddl | out-file -encoding Default -append -FilePath .\SDDL.txt
    }
    
    # End

    該代碼類似於原生命令,但是其包括的 SDDL 更詳細, 並且完整路徑和 SDDL 使用絕對不允許用於目錄或文件名的管道字符 | 來分割,這樣方便以後的分離。


    Folding@Home


    • 已编辑 repl 2014年8月18日 12:33
    • 已标记为答案 AnnaWYModerator 2014年8月25日 10:50
    2014年8月18日 12:29