通过将SMB文件系统的挂载点接入AD域内,您可以在AD域中实现文件系统用户身份的认证管理和文件级别的访问权限控制。以AD域用户身份挂载使用SMB文件系统之前,您需要在AD域内为SMB文件系统注册服务,生成Keytab密钥表文件并上传至NAS控制台开启SMB ACL功能。
前提条件
已创建SMB文件系统。具体操作,请参见创建SMB文件系统。
步骤一:生成Keytab文件
您可以通过以下两种方式生成Keytab文件:
自动生成Keytab文件
- 登录需要安装AD域控制器和DNS服务的ECS服务器。 
- 在PowerShell工具或者PowerShell ISE工具中执行以下命令下载脚本。 - Invoke-WebRequest https://nas-client-tools.oss-cn-hangzhou.aliyuncs.com/windows_client/alinas_smb_windows_inspection.ps1 -OutFile alinas_smb_windows_inspection.ps1
- 将脚本alinas_smb_windows_inspection.ps1中的加密方式修改为-crypto RC4-HMAC-NT(仅限Windows Server 2025) - 此步骤仅适用于Windows Server 2025环境,其他版本用户可直接跳至第4步。 - 用记事本打开刚才下载的alinas_smb_windows_inspection.ps1文件。 - notepad .\alinas_smb_windows_inspection.ps1
- 找到包含-crypto的行(通常在脚本第791行) 
- 将加密方式从 - -crypto All修改为- -crypto RC4-HMAC-NT- 修改前: - $command = "ktpass -princ cifs/$MountAddress@$domainFullUpper -ptype KRB5_NT_PRINCIPAL -mapuser $SetspnNas@$domainFull -crypto All -out c:\nas-mount-target.keytab -pass tHePaSsWoRd123"- 修改后: - $command = "ktpass -princ cifs/$MountAddress@$domainFullUpper -ptype KRB5_NT_PRINCIPAL -mapuser $SetspnNas@$domainFull -crypto RC4-HMAC-NT -out c:\nas-mount-target.keytab -pass tHePaSsWoRd123"
- 按 Ctrl+S 保存并关闭文件。 
 
- 执行以下命令自动安装AD域控制器和DNS服务,生成Keytab文件。 - .\alinas_smb_windows_inspection.ps1 -MountAddress file-system-id.region.nas.aliyuncs.com -ConfigAD $true -Userdomain "example.com" -Username "administrator" -Password "password" -Locale zh-CN- 重要字段说明如下所示,请根据实际情况替换: - file-system-id.region.nas.aliyuncs.com:表示SMB文件系统挂载点地址。您可以在文件系统列表页面,单击目标文件系统旁的图标,在挂载点列表的挂载点地址列,获取挂载点地址。 
- example.com:表示搭建的AD域名。 
- administrator:表示AD服务账号名。 
- password:表示AD服务登录密码。 
 
首次运行脚本安装完AD域服务后并首次启动AD域时,Windows AD服务器将会重启。重启后需再次运行上述脚本,完成生成Keytab的步骤。
手动配置keytab文件
- 安装并启用AD域服务及DNS服务。具体操作,请参见安装AD域控制器。 
- 登录AD控制器所在的ECS服务器。 
- 打开CMD命令窗口,执行以下命令为SMB文件系统创建服务账号。 - dsadd user CN=<AD服务账号名>,DC=<AD域域名>,DC=com -samid <AD服务账号名> -display <用户描述文字> -pwd <用户密码> -pwdneverexpires yes- 示例: - dsadd user CN=alinas,DC=EXAMPLE,DC=com -samid alinas -display "Alibaba Cloud NAS Service Account" -pwd tHeRd123**** -pwdneverexpires yes- 如果登录账号为普通账号,则需要管理员用户为其设置读取/写入ServicePrincipalName的权限,然后再为SMB文件系统创建服务账号。命令如下所示。 - dsacls "CN=<AD服务账号名>,DC=<AD域域名>,DC=com" /I:T /G "<AD服务账号名>:RPWP;servicePrincipalName"- 示例: - dsacls "CN=alinas,DC=cdbptest01,DC=com" /I:T /G "alinas:RPWP;servicePrincipalName"- 其中, - RP为读权限,- WP为写权限。
- 执行以下命令,为SMB文件系统挂载点注册并添加服务主体。 - 执行命令 - setspn -S cifs/<SMB协议NAS文件系统挂载点地址> <AD服务账号名>- 示例 - setspn -S cifs/****-****.cn-hangzhou.nas.aliyuncs.com alinas说明- 挂载点地址格式为 - file-system-id.region.nas.aliyuncs.com,请根据实际值替换。您可以在文件存储NAS控制台文件系统列表页面,单击目标文件系统后的管理,进入挂载使用页面获取挂载地址。
- 请勿将挂载目录写在挂载点后地址中误写成 - file-system-id.region.nas.aliyuncs.com/myshare。
 
- 返回示例 - 如果返回如下类似信息,则说明SMB文件系统挂载服务主体已添加成功。  
 
- 检查Windows AD服务器或Windows客户端的setspn配置。 - 执行命令 - setspn alinas- 返回信息中包含目标文件系统挂载点,则表示Windows AD服务器或Windows客户端的setspn配置正常。  
- 在AD域服务器上,打开CMD命令窗口,执行以下命令为SMB文件系统挂载点生成Keytab密钥表文件。 - 对于Windows Server 2022 及更早版本 - ktpass -princ cifs/<SMB文件系统挂载点地址>@<AD域> -ptype KRB5_NT_PRINCIPAL -crypto All -out <生成的密钥表文件的文件路径> -pass <用户密码>- 示例: - ktpass -princ cifs/****-****.cn-hangzhou.nas.aliyuncs.com@EXAMPLE.com -ptype KRB5_NT_PRINCIPAL -crypto All -out c:\nas-mount-target.keytab -pass tHeP****d123
- 对于Windows Server 2025 - 由于windows server 2025不支持 DES,所以生成 keytab 参数 -crypto ALL 需要修改成 -crypto RC4-HMAC-NT - ktpass -princ cifs/<SMB文件系统挂载点地址>@<AD域> -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT -out <生成的密钥表文件的文件路径> -pass <用户密码>- 示例: - ktpass -princ cifs/****-****.cn-hangzhou.nas.aliyuncs.com@EXAMPLE.com -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT -out c:\nas-mount-target.keytab -pass tHeP****d123
 - 如果需要验证Keytab密钥表文件的正确性,您可以参照如何验证Keytab文件正确性?进行验证。 
如果需要将keytab文件下载至本地服务器,您可以参照通过Workbench上传下载或管理ECS上的文件。
步骤二:上传Keytab文件
在NAS控制台,上传阿里云SMB文件系统服务账号的Keytab文件。
- 登录NAS控制台。 
- 在左侧导航栏,选择。 
- 在文件系统列表页面,单击目标文件系统ID或目标文件系统操作列的管理。 
- 在访问控制页签,单击开启。 
- 在开启SMB ACL对话框,上传阿里云文件系统服务账号的Keytab文件,然后单击确定。  
- 在访问控制页签,单击修改配置。 
- 在修改配置对话框,请参见如下说明对参数进行修改。  重要 重要- 仅支持SMB 3.0及以上版本文件协议的操作系统开启传输加密。关于支持SMB 3.0及以上版本文件协议的操作系统,请参见SMB 3.0及以上协议版本支持的客户端操作系统。 - 参数 - 描述 - 允许匿名访问 - 是否允许匿名访问文件系统。取值范围如下: - 是:允许任何人以NTLM方式挂载该文件系统,挂载后用户身份为Everyone,ACL仍然生效。 
- 否(默认值):不允许匿名用户访问文件系统。 
 - 启用传输加密 - 是否开启SMB文件系统传输加密功能。取值范围如下: - 是:开启SMB文件系统传输加密功能。 
- 否(默认值):不开启SMB文件系统传输加密功能。 
 - 更多信息,请参见SMB协议文件系统传输加密。 - 拒绝非加密客户端 - 配置访问SMB文件系统的客户端类型。取值范围如下: - 是:仅支持使用传输加密的客户端挂载该SMB文件系统,即支持SMB传输加密的操作系统以AD域身份挂载SMB文件系统。 - 当以匿名身份挂载或使用不支持传输加密的客户端挂载SMB文件系统时,挂载将会失败。 
- 否:所有客户端均能挂载该SMB文件系统,但只有支持传输加密的操作系统以AD域身份挂载SMB文件系统才会启用传输加密功能。 
 - Keytab文件 - 上传Keytab文件。 - 超级用户 - 超级用户能够在不改动ACL的情况下对任何文件夹中的任何文件进行操作,您可以将超级用户配置为用户或群组。配置时需符合SID格式,例如S-1-5-32-544。默认值为空。 - 用户目录 - 每个用户的用户目录主路径。例如用户目录是\home,则对于用户A,文件系统会在A登录时自动创建\home\A的目录。如果\home\A已经存在,则跳过。默认值为空。 重要- \home目录要有允许用户A创建目录的权限,否则\home\A无法创建。 重要- 如果客户端已挂载SMB文件系统,在修改配置后请重新挂载SMB文件系统,使AD域服务账号配置生效。 
后续步骤
将SMB文件系统挂载点接入到了AD域后,您可以通过AD域身份挂载并使用SMB文件系统。具体操作,请参见Windows客户端以AD域用户身份挂载并使用SMB文件系统和Linux客户端以AD域用户身份挂载并使用SMB文件系统。