本文介绍在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/

















图标,在挂载点列表的挂载点地址列,将鼠标置于
图标,获取挂载点地址。
