本文介绍在Windows操作系统中,如何以AD域身份挂载SMB文件系统。以及挂载成功后,如何以AD域身份访问SMB协议文件系统,查看和编辑文件或目录的ACL。

前提条件

SMB文件系统挂载点已接入AD域。具体操作,请参见将SMB文件系统挂载点接入AD域

背景信息

在SMB文件系统挂载点接入AD域前,仅支持以匿名用户身份挂载并使用SMB文件系统。在SMB文件系统挂载点接入AD域后,您可以设置是否继续允许匿名用户身份挂载访问。

  • 如果继续允许匿名访问文件系统,设备可以通过Kerberos认证以域身份访问文件系统,也可以通过NTLM认证以Everyone身份访问文件系统。
  • 如果已设置为不允许匿名访问文件系统,该文件系统将只允许通过Kerberos认证协议的Windows客户端以AD域用户身份进行挂载。

方式一:Windows客户端加入AD域并挂载SMB文件系统

以下步骤将以Windows Server 2012版本操作系统为例介绍如何将Windows客户端加入AD域并挂载SMB文件系统。

  1. 配置Windows客户端的DNS服务器地址。
    1. 登录Windows客户端。
    2. 在桌面左下角,单击开始
    3. 开始菜单栏,单击控制面板
    4. 控制面板对话框,选择网络和Internet > 网络和共享中心
    5. 网络与共享中心对话框查看活动网络区域,单击以太网
    6. 以太网属性对话框,单击属性
    7. 以太网属性对话框此连接使用下列项目:区域,选中Internet协议版本4(TCP/IPv4),单击属性
    8. Internet协议版本4(TCP/IPv4)属性对话框,选中使用下面的DNS服务器地址,设置DNS服务器地址为AD域服务器的IP地址。SMB_ACl_DNS
    9. 使用命令提示符工具执行ping命令,pingAD域名,验证Windows客户端和AD域之间的连通性。SMB ACL001
  2. 将Windows客户端加入AD域。
    1. 控制面板对话框,选择系统和安全 > 系统
    2. 系统对话框计算机名、域和工作组设置区域,单击更改设置
    3. 系统属性对话框,单击更改
    4. 计算机名/域更改对话框,填写已搭建的AD域名。根据界面提示,单击确定完成配置。SMB_ACl_AD_Domain
    5. 重启Windows客户端,使修改配置生效。
  3. 挂载SMB文件系统。
    以AD域身份登录Windows客户端,使用命令提示符工具执行以下命令,挂载SMB文件系统。
    net use z: \\nas-mount-target.nas.aliyuncs.com\myshare

方式二:Windows客户端连接AD服务器并挂载SMB文件系统

以下步骤将以Windows Server 2012版本操作系统为例介绍通过配置DNS服务器连接AD服务器,然后挂载SMB文件系统。

  1. 配置Windows客户端的DNS服务器地址。
    1. 登录Windows客户端。
    2. 在桌面左下角,单击开始
    3. 开始菜单栏,单击控制面板
    4. 控制面板对话框,选择网络和Internet > 网络和共享中心
    5. 网络与共享中心对话框查看活动网络区域,单击以太网
    6. 以太网属性对话框,单击属性
    7. 以太网属性对话框此连接使用下列项目:区域,选中Internet协议版本4(TCP/IPv4),单击属性
    8. Internet协议版本4(TCP/IPv4)属性对话框,选中使用下面的DNS服务器地址,设置DNS服务器地址为AD域服务器的IP地址。SMB_ACl_DNS
    9. 使用命令提示符工具执行ping命令,pingAD域名,验证Windows客户端和AD域之间的连通性。SMB ACL001
  2. 挂载SMB文件系统。
    在Windows客户端,使用命令提示符工具执行以下命令,以AD域身份挂载SMB文件系统。
    net use z: \\nas-mount-target.nas.aliyuncs.com\myshare /user:EXAMPLE.com\USERNAME PASSWORD
    其中,EXAMPLE.com为您已搭建的AD域名。

管理SMB文件系统ACL

开启ACL功能并以AD域身份挂载SMB文件系统后,您可以采用以下方式查看和编辑文件或目录ACL。

  • mklink命令行工具
    您可以使用mklink命令行工具,在Windows本地磁盘为SMB文件系统挂载点生成符号链接,同时查看和编辑文件或目录的ACL。
    1. 使用命令提示符工具创建文件系统映射。
      mklink /D c:\myshare \\nas-mount-target.nas.aliyuncs.com\myshare
      其中,\myshare为符号链接的文件系统路径,nas-mount-target.nas.aliyuncs.com\myshare为SMB文件系统的挂载点。
    2. 为普通用户添加使用符号链接的权限。
      如果您使用系统管理员Administrator,请跳过此步骤。
      1. 使用系统管理员Administrator搜索并运行secpol.msc。secpol
      2. 本地安全策略对话框,选择本地策略 > 用户权限分配,按照页面提示将指定用户加入创建符号链接的权限组中。AD挂载SMBsecpol_03
      3. 使用普通用户重新登录Windows客户端。
    3. 访问SMB文件系统并查看文件或目录ACL。

      生成符号链接后,您可以以访问Windows本地磁盘子目录的形式访问SMB文件系统,同时支持查看和编辑文件或目录的ACL。

  • Windows文件资源管理器
    在Windows本地磁盘为SMB文件系统挂载点生成符号链接,可以通过Windows的文件资源管理器(File Explorer)查看、编辑文件和目录的ACL。
    1. 找到目标文件或目录,右键单击属性set_sec_02
    2. 属性对话框,单击安全页签,然后单击编辑set_sec_03
    3. 在权限对话框,单击添加,按照页面提示填写相关信息。set_sec_04set_sec_05
    在使用Windows文件资源管理器查看SMB文件系统时,如果需要回退本地磁盘路径,请单击回退(下图中的标注1)或者上退(下图中的标注2)按钮,但是不要选中路径中的某一段(下图中的标注3)来回退。文件管理器访问SMB文件
    在使用Windows文件资源管理器访问和使用文件系统时,阿里云SMB文件系统并没有实际加入用户的AD域。如果不是通过本地磁盘路径C:\myshare访问文件系统,而是通过普通网络路径\\nas-mount-point.nas.aliyuncs.com\myshare访问,在设置ACL时,会遇到因RPC服务器不可用而无法确定NAS挂载点是否已加入域的情况。SMB_ACL_系统提示_1SMB_ACL_系统提示_2
    重要 Windows文件资源管理器对C:\myshare修改权限并不会应用到文件系统的根目录。修改根目录权限需要使用Set-Acl Powershell命令或者icacls命令行。
  • PowerShell命令
    Windows PowerShell支持Get-AclSet-Acl来查看和编辑文件或目录ACL。
    • Get-Acl
      $value = Get-Acl -Path "Z:"# Set properties
      $value.Access
      Get-Acl
      Set properties
      $identity = "Administrator"
      $fileSystemRights = "FullControl"
      $type = "Allow"
      # Create new rule
      $fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type
      $fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList
      # Apply new rule
      $value.SetAccessRule($fileSystemAccessRule)
      $value.Access
      set
    • Set-Acl

      Set-Acl命令修改权限不需要mylink c:\myshare快捷方式,可以直接修改挂载盘路径,也可以修改根目录权限。

      Set-Acl $value -Path "Z:"
      重要 根目录权限修改最好在文件系统刚创建时就设置妥当,否则由于继承机制,命令会需要修改子目录和子文件。
  • icacls命令

    icacls命令是Windows命令行中的ACL操作标准命令。您可以通过icacls命令查看和编辑文件或目录ACL。

    示例:
    icacls z:
    #添加用户的完全控制权限
    icacls z: /grant <用户名>:(F)
    #添加administrator的完全控制权限
    icacls z: /grant administrator:(F)
    icacls z:
    #删除用户的所有权限
    icacls z: /remove <用户名>
    #删除Everyone的所有权限
    icacls z: /remove <用户名>
    icacls z:
    320