本文介绍在Linux操作系统中,如何以AD域身份挂载SMB文件系统。以及挂载成功后,如何以AD域身份访问SMB协议文件系统,查看和编辑文件或目录的ACL。
前提条件
- SMB文件系统挂载点已接入AD域。具体操作,请参见将SMB文件系统挂载点接入AD域。 
背景信息
在SMB文件系统挂载点接入AD域前,仅支持以匿名用户身份挂载并使用SMB文件系统。在SMB文件系统挂载点接入AD域后,您可以设置是否继续允许匿名用户身份挂载访问。
- 如果继续允许匿名访问文件系统,设备可以通过Kerberos认证以域身份访问文件系统,也可以通过NTLM认证以Everyone身份访问文件系统。 
- 如果已设置为不允许匿名访问文件系统,该文件系统将只允许通过Kerberos认证协议的Linux客户端以AD域用户身份进行挂载。 
以下步骤以Ubuntu和CentOS为例介绍如何以AD域身份挂载访问SMB文件系统。
方式一:Linux客户端加入AD域并挂载SMB文件系统
- 登录Linux客户端。 
- Linux客户端加入AD域。 
- 执行id命令,查询AD域用户身份状态。 - id testuser@example-company.com- 如果回显包含如下类似信息,说明AD域用户身份能被正常识别。  
- 添加AD域用户登录权限。 - 授予指定用户登录Linux客户端的权限。 - sudo realm permit usera1@example-company.com sudo realm permit userb1@example-company.com userb2@example-company.com
- 授予指定用户组登录Linux客户端的权限。 - sudo realm permit -g 'Security Users' sudo realm permit -g 'Domain Users' 'Domain Admins'
- 授予所有用户登录Linux客户端的权限。 - sudo realm permit --all
- 授予禁止所有用户登录Linux客户端的权限。 - sudo realm deny --all
 
- 为AD域用户添加sudo权限。 - 执行以下命令打开sudo配置文件,并根据业务场景配置sudo权限。 - sudo vim /etc/sudoers.d/domain_admins- 为指定用户添加sudo权限。 - usera1@example-company.com ALL=(ALL) ALL userb2@example-company.com ALL=(ALL) ALL
- 为指定用户组添加sudo权限。 - %admingroupc1@example-company.com ALL=(ALL) ALL
- 为指定多word组成组名的用户组添加sudo权限。 - %domain\ admins@example-company.com ALL=(ALL) ALL
 
- 配置SSH登录项。 - 打开/etc/ssh/sshd_config配置文件,修改如下登录配置项: - PasswordAuthentication yes
- 执行以下命令重启SSHD服务。 - CentOS - service sshd restart
- Ubuntu - service ssh restart
 
 
- 以AD域身份登录Linux客户端。 - ssh localhost -l usera1@example-company.com- 如果回显包含如下类似信息,说明已使用AD域身份登录Linux客户端。  
- 挂载SMB文件系统。 - 安装挂载工具包。 - Ubuntu - sudo apt-get install keyutils cifs-utils
- CentOS - sudo yum install keyutils cifs-utils
 
- 查询keytab信息。 - 执行id命令查看登录后的uid、gid信息。  
- 执行以下命令挂载文件系统。 - sudo mount -t cifs //205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare /mnt -o vers=2.1,sec=krb5,cruid=371801107,uid=371801107,gid=371800513 --verbose- 其中, - 205dee4****-uub48.us-west-1.nas.aliyuncs.com为文件系统挂载点地址,请根据实际值替换。说明- 如果控制台SMB ACL选项中选择了启用传输加密,则需要使用vers=3.0挂载。 
 
- 添加自动挂载配置。 - 挂载完成后,添加自动挂载配置。重启Linux客户端,将自动完成挂载。 - 在配置文件/etc/auto.master中,添加如下选项: - /share /etc/auto.cifs --timeout=30 --ghost
- 按如下示例修改配置文件/etc/auto.cifs内容: - * -fstype=cifs,vers=2.1,sec=krb5,cruid=${UID},uid=${UID},gid=${GID},file_mode=0700,dir_mode=0700 ://205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare/&- 重要参数字段说明如下,请根据实际值替换。 - cruid和- uid:为本地usera1用户的ID。
- gid:为本地usera1用户的group。
- 205dee4****-uub48.us-west-1.nas.aliyuncs.com:为文件系统挂载点地址。- 您可以在文件存储控制台文件系统列表页面,单击目标文件系统前的  图标,在挂载点列表的挂载点地址列,将鼠标置于 图标,在挂载点列表的挂载点地址列,将鼠标置于 图标,获取挂载点地址。 图标,获取挂载点地址。
 
- 重启autofs服务。 - systemctl restart autofs.service
- 确认自动挂载配置结果。 - 假设创建了//205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare/usera1目录,权限设置为用户usera1拥有所有权限。 - 在AD域用户登录后,执行 - ls /share/usera1命令,就能够查看到SMB文件系统目录usera1下的内容即配置成功。
 
方式二:Linux客户端连接AD服务器并挂载SMB文件系统
- 登录Linux客户端。 
- 连接AD服务器。 
- 以本地用户身份保存SMB文件系统挂载点的票据信息。 - 新建本地用户并记录新建用户的UID和GID。 - useradd usera1 su - usera1 id 
- 使用新建的本地用户保存SMB文件系统挂载点的票据信息。 - kinit administrator@EXAMPLE-COMPANY.COM klist 
 
- 挂载SMB文件系统。 - 安装挂载工具包。 - Ubuntu - sudo apt-get install keyutils cifs-utils
- CentOS - sudo yum install keyutils cifs-utils
 
- 执行以下命令挂载文件系统。 - sudo mount -t cifs //205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare /mnt -o vers=2.1,sec=krb5,cruid=1004,uid=1004,gid=1004 --verbose- 其中, - 205dee4****-uub48.us-west-1.nas.aliyuncs.com为文件系统挂载点地址,请根据实际值替换。说明- 如果控制台SMB ACL选项中选择了启用传输加密,则需要使用vers=3.0挂载。 
 
- 添加自动挂载配置。 - 挂载完成后,添加自动挂载配置。重启Linux客户端,将自动完成挂载。 - 在配置文件/etc/auto.master中,添加如下选项: - /share /etc/auto.cifs --timeout=30 --ghost
- 按如下示例修改配置文件/etc/auto.cifs内容: - * -fstype=cifs,vers=2.1,sec=krb5,cruid=${UID},uid=${UID},gid=${GID},file_mode=0700,dir_mode=0700 ://205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare/&- 重要参数字段说明如下,请根据实际值替换。 - cruid和- uid:为本地usera1用户的ID。
- gid:为本地usera1用户的group。
- 205dee4****-uub48.us-west-1.nas.aliyuncs.com:为文件系统挂载点地址。- 您可以在文件存储控制台文件系统列表页面,单击目标文件系统前的  图标,在挂载点列表的挂载点地址列,将鼠标置于 图标,在挂载点列表的挂载点地址列,将鼠标置于 图标,获取挂载点地址。 图标,获取挂载点地址。
 
- 重启autofs服务。 - systemctl restart autofs.service
- 确认自动挂载配置结果。 - 假设创建了//205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare/usera1目录,权限设置为用户usera1拥有所有权限。 - 在AD域用户登录后,执行 - ls /share/usera1命令,就能够查看到SMB文件系统目录usera1下的内容即配置成功。
 
使用cifsacl工具管理SMB文件系统ACL
您可以使用getcifsacl和setcifsacl命令管理SMB文件系统ACL。示例如下:
getcifsacl usera1/
sudo setcifsacl -a "ACL:S-1-5-21-3076751034-3769290925-1520581464-513:ALLOWED/OI|CI|I/FULL" usera1/












