阿里云SMB协议文件存储服务可以支持基于AD域系统的用户身份认证及访问权限控制,使线下传统的基于微软的Active Directory域的文件系统及应用可以无缝地迁移到阿里云上来,进一步降低SMB协议的文件系统使用和运维成本。阿里云SMB协议文件存储服务可以依赖用户部署在线下或者阿里云上的AD域控制器,通过Kerberos网络身份认证协议来进行AD域用户身份的认证,然后基于认证的域身份来进行目录和文件级别的访问权限控制。
本文介绍了如何在加入AD域的Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统,并如何配置使AD域用户登陆Linux客户端以后自动挂载。如果需要在windows以AD域用户身份挂载使用阿里云SMB协议文件系统,请参考从Windows以AD域用户身份挂载使用阿里云SMB协议文件系统。如果需要从一个未加入AD域的Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统,请参考Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统。
需要注意的是,阿里云的SMB协议文件存储服务支持Kerberos认证协议和windows Active Directory对接,目前暂不支持NTLM的认证协议。因此,在以AD域用户身份挂载阿里云SMB文件系统时,需要指明使用Kerberos认证协议。否则,Linux系统会以默认NTLM的身份登录,在SMB文件系统支持guest身份登录的情况下,实际登录的是guest账号。
下面以Unbuntu和Centos为例简单描述Linux客户端如何加入AD域,如何以域用户身份登陆并自动挂载阿里云SMB协议文件系统的流程。
将Linux客户端加入AD域
1. 安装需要的包
Ubuntu:
apt update apt -y install realmd libnss-sss libpam-sss sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit krb5-user
Centos:
yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python-utils -y
2. 配置服务器名字
将机器名配置成:
hostnamectl set-hostname myubuntu.example.com
用hostnamectl确认配置好了机器名,如下:
3. 配置DNS
Unbuntu 需要先停止DNS的自动更新
systemctl disable systemd-resolved systemctl stop systemd-resolved
然后将AD域服务起的IP加入到/etc/resolv.conf中
4. 配置Kerberos
Unbuntu在安装kerberos包的时候就输入AD域和AD服务器,配置好了kerberos。Centos需要进行单独/etc/krb5.conf配置,并加入
default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
如下:
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt spake_preauth_groups = edwards25519 default_realm = EXAMPLE.COM default_ccache_name = KEYRING:persistent:%{uid} default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 [realms] EXAMPLE.COM = { kdc = iZisovkei9ifgeZ.example.com admin_server = iZisovkei9ifgeZ.example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM
5. 发现AD域
6. 加入AD域
realm join -U Administrator example.com
确认已经加入AD域
7. 配置域用户登录的home目录(Unbuntu)。
加入域后,Unbuntu需要配置用户登录后的home目录。CentOS可以跳过这一步。
bash -c "cat > /usr/share/pam-configs/mkhomedir" <<EOF Name: activate mkhomedir Default: yes Priority: 900 Session-Type: Additional Session: required pam_mkhomedir.so umask=0022 skel=/etc/skel EOF
然后激活:
pam-auth-update
保证 “activate mkhomedir” 选择上 [*],如下:
8. 配置sssd
配置/etc/sssd/sssd.conf。注意,ubuntu需要在域名配置中添加,才能保证在后面自动挂载的时候正确使用对应的kerberos ticket.
krb5_ccname_template=FILE:%d/krb5cc_%U
如下:
然后重新启动ssd服务并确认服务状态正常:
systemctl restart sssd systemctl status sssd
9. 确认AD域用户能够被正常识别
可以通过id命令确认域用户来确认加入域成功。
10. 配置用户登录的权限
限制某个单独用户的登录权限
realm permit user1@example.com realm permit user2@example.com user3@example.com
限制某个单独用户组的登录权限
ream permit -g sysadmins realm permit -g 'Security Users' realm permit 'Domain Users' 'admin users'
允许所有用户登录:
realm permit --all
不允许所有用户登录:
realm deny --all
11. 配置Sudo权限
配置sudo权限配置文件
$ vi /etc/sudoers.d/domain_admins
添加单个用户权限
user1@example.com ALL=(ALL) ALL user2@example.com ALL=(ALL) ALL
添加组权限
%group1@example.com ALL=(ALL) ALL
添加多个word组成的组名的权限
%security\ users@example.com ALL=(ALL) ALL %system\ super\ admins@example.com ALL=(ALL) ALL
12. 测试域用户ssh登录
如果机器没有配置ssh登录则需要修改ssh配置
修改/etc/ssh/sshd_config中的这行:
PasswordAuthentication no
为:
PasswordAuthentication yes
然后重启sshd
Ubuntu用以下命令:
service ssh restart
CentOS用以下命令:
service sshd restart
然后用AD域用户身份登录机器:
ssh localhost -l testuser@example.com
挂载SMB文件系统
在进行挂载之前,请参考将阿里云SMB协议文件系统挂载点接入AD域将SMB文件系统接入AD域。
在这个例子里,在AD服务器上执行如下命令:
dsadd user "CN=aliyun.nas,DC=example,DC=com" -samid aliyun.nas -display "Alibaba Cloud NAS Service Account" -pwd tHePaSsWoRd123 -pwdneverexpires yes setspn -S cifs/205dee494a3-uub48.us-west-1.nas.aliyuncs.com aliyun.nas ktpass -princ cifs/205dee494a3-uub48.us-west-1.nas.aliyuncs.com@EXAMPLE.COM -mapuser aliyun.nas@example.com ptype KRB5_NT_PRINCIPAL -crypto All -out c:\205dee494a3-uub48.keytab -pass tHePaSsWoRd123
用户以域账号身份登录Linux客户端后,用户挂载SMB文件系统,需要完成如下配置:
1. 安装需要的包
Ubuntu:
apt-get install keyutils cifs-utils
CentOS:
yum install keyutils cifs-utils
2. 执行挂载
域用户身份登录Linux后,用klist命令查看登录后的keytab信息,如下:
执行挂载命令如下:
sudo mount -t cifs //205dee494a3-uub48.us-west-1.nas.aliyuncs.com/myshare /mnt -o vers=2.1,sec=krb5,cruid=880401104,uid=880401104,gid=880400513 --verbose
配置自动挂载SMB文件系统
1. 安装需要的包
Ubuntu:
apt-get install autofs
CentOS:
yum install autofs
2. 配置自动挂载脚本
修改/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 ://205dee494a3-uub48.us-west-1.nas.aliyuncs.com/myshare/&
确认/etc/auto.master和/etc/auto.cifs都是0644的权限。上面的配置表示,当用户进入到/share/目录时,系统会自动挂载//205dee494a3-uub48.us-west-1.nas.aliyuncs.com/myshare/到/share/。注意,//205dee494a3-uub48.us-west-1.nas.aliyuncs.com/myshare/必须创建好并配置相应的权限给登录用户。
3. 重新启动autofs
systemctl restart autofs.service
4. 确认自动挂载成功
在域用户登录后,ls /share/testuser,就应该能够看到SMB文件系统目录testuser下的内容。(假设已经在SMB文件系统创建了testuser目录,上面的auto.cifs中,需要在/myshare下面创建testuser目录,并且配置相应的权限)
阿里云SMB协议文件存储服务基于AD域系统的用户身份认证及访问控制的相关文章
如果要使用阿里云SMB协议文件存储服务的基于AD域系统的用户身份认证及访问权限控制功能,请在阿里云文件系统控制台打开配置该功能。具体请参考将阿里云SMB协议文件系统挂载点接入AD域。
下面是使用基于AD域系统的用户身份认证及访问权限控制可能需要的相关知识点:
- 阿里云SMB协议文件存储服务支持基于AD域的用户身份认证及权限访问控制介绍,总体介绍阿里云SMB协议文件存储服务支持基于AD域的用户身份认证及权限访问控制的设计实现。
- Kerberos网络身份认证协议介绍及SMB文件系统对其的支持,介绍Kerberos网络身份认证协议以及与SMB协议问系统的交互。
- 安装并启用Active Directory域服务与DNS服务,介绍如何在VPC中安装并启用AD域服务和DNS服务。
- 将Windows系统机器加入AD域,介绍如何将windows机器加入AD域。
- 将阿里云SMB协议文件系统挂载点接入AD域,介绍如何在AD域服务器以及阿里云SMB协议文件系统中进行必要的配置来支持基于AD域的用户身份认证及权限访问控制。
- 从Windows以AD域用户身份挂载使用阿里云SMB协议文件系统,介绍如何从windows客户端以域用户身份挂载使用阿里云SMB协议文件系统。
- Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统,介绍如何从Linux客户端以域用户身份挂载使用阿里云SMB协议文件系统。
- 加入AD域的Linux客户端以AD域身份自动挂载阿里云SMB协议文件系统,介绍如何把Linux客户端加入AD域,如何挂载以及自动挂载阿里云SMB协议文件系统。
- 阿里云SMB协议文件系统ACL权限控制使用指南,介绍如何正确地配置阿里云SMB协议文件系统的ACL以及相应的规则描述。
- 阿里云SMB协议文件系统AD身份认证和ACL权限控制使用场景 - Home Directory / User Profile,介绍使用权限控制的域用户Home Directory以及User Profile两个场景下的相关配置及实现。
- MacOS客户端连接阿里云NAS SMB文件系统,介绍如何从MacOS客户端挂载使用阿里云SMB协议文件系统。