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

简介: 本文介绍了如何在加入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协议文件系统。
目录
相关文章
|
11月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
307 18
|
11月前
|
Linux 网络安全 iOS开发
SecureCRT & SecureFX 9.6.3 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输
SecureCRT & SecureFX 9.6.3 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输
2275 4
SecureCRT & SecureFX 9.6.3 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输
|
12月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
802 28
|
自然语言处理 监控 Linux
Linux 内核源码分析---proc 文件系统
`proc`文件系统是Linux内核中一个灵活而强大的工具,提供了一个与内核数据结构交互的接口。通过本文的分析,我们深入探讨了 `proc`文件系统的实现原理,包括其初始化、文件的创建与操作、动态内容生成等方面。通过对这些内容的理解,开发者可以更好地利用 `proc`文件系统来监控和调试内核,同时也为系统管理提供了便利的工具。
660 16
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
存储 运维 监控
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
555 1
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
766 15
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
484 6
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
3635 7
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
390 7