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