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

前提条件

已将SMB文件系统挂载点接入AD域,详情请参见将阿里云SMB协议文件系统挂载点接入AD域

背景信息

阿里云SMB文件系统在接入AD域之前,只支持以匿名方式来挂载。以Everyone用户的身份和权限来使用文件系统。当一个SMB文件系统开通AD认证功能之后,用户可以设置是否继续允许匿名挂载访问。

  • 如果继续允许匿名访问文件系统,设备可以通过Kerberos认证以域身份使用文件系统,也可以通过NTLM认证以Everyone身份使用文件系统。
  • 如果已设置为不允许匿名访问文件系统,该文件系统将只允许设备通过Kerberos认证协议以域用户身份进行挂载。
说明 请使用Windows系统的命令行工具(cmd)运行本文中提供的命令。

一、用net use命令行工具挂载使用SMB文件系统

使用net use工具进行文件系统挂载的CMD命令模板如下所示。

net use [可用的目标盘符] [SMB挂载点域名]

命令范例如下所示。

  • 已加入AD域的设备可以用以下命令挂载。

    net use z: \\nas-mount-target.nas.aliyuncs.com\myshare
  • 未加入AD域的设备可以用以下命令挂载。

    net use z: \\nas-mount-target.nas.aliyuncs.com\myshare /user:MYDOMAIN.com\USERNAME PASSWORD

NAS用户基于net use命令行工具的挂载命令来挂载文件系统。该模式下,用户可以正常访问文件系统,查看文件或目录的ACL,但不能编辑ACL。

二、用mklink命令行工具使用SMB文件系统

用户可以用mklink命令行工具,在Windows本地盘下,为SMB文件系统挂载点生成符号链接。

说明 mklink命令无法通过powershell使用,只能用命令提示符。

使用mklink工具进行文件系统映射的CMD命令模板如下所示。

mklink /D [符号链接的文件系统路径] [SMB协议NAS文件系统挂载点域名]

命令范例如下所示。

mklink /D c:\myshare \\nas-mount-target.nas.aliyuncs.com\myshare

默认情况下,Windows系统只有系统管理员Administrator可以创建符号链接。如果普通用户需要创建符号链接,需要由管理员为该用户添加权限。

  1. 以管理员权限搜索并运行secpol.msc。secpol
  2. 将指定用户加入创建符号链接的权限组中。AD挂载SMBsecpol_03
  3. 重新登录系统,使创建的符号链接生效。

NAS用户为文件系统挂载点在Windows本地盘下生成符号链接,以访问Windows本地盘的子目录的形式来访问NAS文件系统。在该模式下,用户可以正常访问文件系统,也可以查看和编辑文件或目录的ACL。

三、用Windows文件资源管理器查看和编辑ACL

NAS用户为文件系统挂载点在Windows本地盘下生成符号链接后,可以通过Windows的文件资源管理器(File Explorer)查看、编辑文件和目录的ACL。

下图为使用mklink工具在此电脑>本地磁盘下生成符号链接(myshare)的形式挂载使用SMB文件系统后,使用Windows的文件资源管理器(File Explorer)查看NAS文件系统中文件的安全属性(即ACL)的示例。

set_sec_02set_sec_03set_sec_04set_sec_05
在使用Windows的文件资源管理器查看NAS文件系统时,如果需要回退本地磁盘路径,请单击回退(下图中的标注1)或者上退(下图中的标注2)按钮,但是不要选中路径中的某一段(下图中的标注3)来回退。如下图所示。文件管理器访问SMB文件

在用Windows文件资源管理器访问和使用文件系统模式下,阿里云SMB文件系统并没有实际加入用户的AD域。如果不是通过本地磁盘路径C:\myshare访问文件系统,而是通过普通网络路径\\nas-mount-point.nas.aliyuncs.com\myshare访问,在设置ACL时,会遇到因RPC服务器不可用而无法确定NAS挂载点是否已加入域的情况。如下图所示。

SMB_ACL_系统提示_1SMB_ACL_系统提示_2

四、通过Get-Acl或Set-Acl Powershell命令查看和编辑ACL

Windows Powershell支持Get-Acl和Set-Acl来查看和编辑ACL。
  • Get-Acl示例如下所示。
    $value = Get-Acl dir
    $value.Access
    Get-Acl
  • Set-Acl命令示例如下所示。
    Set-Acl .\dirKid2 $value
    Get-Acl .\dirKid1 | Set-Acl .\dirKid2

五、通过icacls命令查看和编辑ACL

icacls是Windows命令行下的ACL操作标准命令。示例如下所示。

icacls .\dir0
icacls .\dir0 /grant *S-1-1-0:(d,wdac)
icacls .\dir0
icacls