加入AD域的Linux客户端以AD域身份自动挂载阿里云SMB协议文件系统

本文涉及的产品
访问控制,不限时长
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 本文介绍了如何在加入AD域的Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统,并如何配置使AD域用户登陆Linux客户端以后自动挂载。如果需要在windows以AD域用户身份挂载使用阿里云SMB协议文件系统,请参考《从Windows以AD域用户身份挂载使用阿里云SMB协议文件系统》。如果需要从一个未加入AD域的Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统,请参考《Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统》。

本文可能不是最新内容。最新文档可以参考官方文档《Linux客户端加入AD域并挂载SMB文件系统



阿里云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确认配置好了机器名,如下:

image.png

hostnamectl

t-hostnamemyubuntu.example.com

rooteizrj90myfga70i4jqsm9z

:~#

homenamecti

rooteizrj90myfgaf70i4jcsmr9#

found

command

homenamect1:

not

rooteizrj90mygaf70i4jqsm9z:~#hosamect

statichostname:myubuntu.example.com

Iconname:

:computer-vm

Chassis:Vm

MachineID:2021012814540418312709107819686

BOotID:

d767bd29827447fealaaaa4dbdob2586

Virtualization:

kVm

operatingSystem:ubuntu.20:04:1.ITs

5.4.0-65-generic

Kernel:]

Linux

Architecture:x86-64

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域

image.png

6. 加入AD域

realm join -U Administrator example.com

确认已经加入AD域

image.png


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” 选择上 [*],如下:

image.png


8. 配置sssd

配置/etc/sssd/sssd.conf。注意,ubuntu需要在域名配置中添加,才能保证在后面自动挂载的时候正确使用对应的kerberos ticket.

krb5_ccname_template=FILE:%d/krb5cc_%U 

如下:

image.png


然后重新启动ssd服务并确认服务状态正常:

systemctl restart sssd
systemctl status sssd

image.png

rooteizj90mylgaf7014jg8m92:pam-auth-udate

ootEz190myga7014jqsm92:~vi/et/dscn

上OtEZ90mya7014JGSM92:tec

ooteizi9omyfqa70i4qs92~sstemct

statussssd

Daemon

SSSDSErVIceSystenSecurityServicesD

osdec:loadedJtb/systend/Yte/33.ece

ctive:active(unning)s

ST;3sago

21279

MainPID:

(sssd

(limit:9315)

Tasks:

Memory:42.2M

CGroup:/system.ic/i

21279/usr/sbin/sssd-i--ioggerile

21300/usr/libexec/sssd/sssdbe

--1ogger-files

e--domain

--gid

example.com--

21301/usr/libexec/sss/

gido

0--1ogger-files

uid

21302/usr/iibexec/sssa/sss

--1oggerafiles

pam

14:00:21myubuntu.example.comsystemlj:sttigtem

12

ecurityseryicesDaemon...

Mar

Mar12

14:00:21

myubuntu.example.comsssd

sssdl21279:Startingup

Mar12

14:00:21

sssdbe[213o0]:startingup

myubuntu.example.com

12

msssdnss[21301]:Startingup

:00:21

Mar

myubuntu.example.com

12

14:00:21

Mar

21myubuntu.example.comspa

sdpamt21302:startingup

12

14:00:21myubuntuexample.com

Daemon.

Mar

systemdtij:startedystensecurityservices

9. 确认AD域用户能够被正常识别

可以通过id命令确认域用户来确认加入域成功。

image.png


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

image.png

127.0.0.1

-1

testuseroexample.com

rootemyubuntu:~#

ssh

can'tbeestabiished.

127.0.0.1

(127.0.0.1)

Theauthenticityofhost

image.png



挂载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信息,如下:

image.png

loginFriMar1214:08:052021om27.

Last

testuserbexample.com@myubuntu:~skis

Ticket

cache:FILE:/tmp/krb5cc880401104

Defauitprincipal:testuser@EXAMPLE.CoM

Expires

Validstarting

principal

Seryice

03/12/202114:25:20

krbtgt/

03/13/202100:25:20

gt/EXAMPLECOMQEXAMPLECOM

renewuntil03/13/202114:25:20

执行挂载命令如下:

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域系统的用户身份认证及访问权限控制可能需要的相关知识点:

  1. 阿里云SMB协议文件存储服务支持基于AD域的用户身份认证及权限访问控制介绍,总体介绍阿里云SMB协议文件存储服务支持基于AD域的用户身份认证及权限访问控制的设计实现。
  2. Kerberos网络身份认证协议介绍及SMB文件系统对其的支持,介绍Kerberos网络身份认证协议以及与SMB协议问系统的交互。
  3. 安装并启用Active Directory域服务与DNS服务,介绍如何在VPC中安装并启用AD域服务和DNS服务。
  4. 将Windows系统机器加入AD域,介绍如何将windows机器加入AD域。
  5. 将阿里云SMB协议文件系统挂载点接入AD域,介绍如何在AD域服务器以及阿里云SMB协议文件系统中进行必要的配置来支持基于AD域的用户身份认证及权限访问控制。
  6. 从Windows以AD域用户身份挂载使用阿里云SMB协议文件系统,介绍如何从windows客户端以域用户身份挂载使用阿里云SMB协议文件系统。
  7. Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统,介绍如何从Linux客户端以域用户身份挂载使用阿里云SMB协议文件系统。
  8. 加入AD域的Linux客户端以AD域身份自动挂载阿里云SMB协议文件系统,介绍如何把Linux客户端加入AD域,如何挂载以及自动挂载阿里云SMB协议文件系统。
  9. 阿里云SMB协议文件系统ACL权限控制使用指南,介绍如何正确地配置阿里云SMB协议文件系统的ACL以及相应的规则描述。
  10. 阿里云SMB协议文件系统AD身份认证和ACL权限控制使用场景 - Home Directory / User Profile,介绍使用权限控制的域用户Home Directory以及User Profile两个场景下的相关配置及实现。
  11. MacOS客户端连接阿里云NAS SMB文件系统,介绍如何从MacOS客户端挂载使用阿里云SMB协议文件系统。
目录
相关文章
|
1月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
2月前
|
弹性计算 Linux 数据库
阿里云国际版如何迁移Linux云服务器系统盘中的数据
阿里云国际版如何迁移Linux云服务器系统盘中的数据
|
2月前
|
弹性计算 网络协议 Ubuntu
如何在阿里云国际版Linux云服务器中自定义配置DNS
如何在阿里云国际版Linux云服务器中自定义配置DNS
|
2月前
|
网络协议 安全 Linux
阿里云国际上如何检查 Linux 上正在使用哪些端口
阿里云国际上如何检查 Linux 上正在使用哪些端口
|
2月前
|
Linux
linux开机挂载镜像
【10月更文挑战第1天】在 Linux 系统中,开机挂载镜像通常涉及几个关键步骤,包括创建挂载点、编辑配置文件以及重新加载配置
96 0
|
4月前
|
Ubuntu Linux
内核实验(四):Qemu调试Linux内核,实现NFS挂载
本文介绍了在Qemu虚拟机中配置NFS挂载的过程,包括服务端的NFS服务器安装、配置和启动,客户端的DHCP脚本添加和开机脚本修改,以及在Qemu中挂载NFS、测试连通性和解决挂载失败的方法。
259 0
内核实验(四):Qemu调试Linux内核,实现NFS挂载
|
4月前
|
算法 Linux 索引
Linux0.11 根文件系统挂载(四)
Linux0.11 根文件系统挂载(四)
37 0
|
4月前
|
存储 Linux Shell
【应用服务 App Service】App Service For Linux 中如何挂载一个共享文件夹呢? Mount Azure Storage Account File Share
【应用服务 App Service】App Service For Linux 中如何挂载一个共享文件夹呢? Mount Azure Storage Account File Share
|
4月前
|
存储 Linux 网络安全
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)