在Windows域环境中,Linux系统加入域可实现统一身份认证、权限管理和策略部署,提升企业跨平台运维效率,以下是Linux系统加入Windows域的详细操作流程,涵盖前提条件、两种主流方法(Samba-tool和realmd/SSSD)、配置要点及注意事项。
加入域的前提条件
- 网络连通性:Linux系统与域控制器(DC)需网络互通,可通过
ping 域控IP
或ping 域名
测试。 - DNS配置:确保Linux系统的DNS服务器指向域控,能正向/反向解析域名(如
nslookup 域控域名
)。 - 域控权限:需域管理员账户(或具有“加入域”权限的账户),用于授权Linux系统加入域。
- 时间同步:Linux系统时间与域控时间需同步(误差通常需≤5分钟),可通过
ntpdate 域控IP
或配置chrony服务。 - 防火墙规则:开放域控相关端口,如TCP/UDP 88(Kerberos)、135(RPC)、389(LDAP)、445(SMB)、3268(GC)等。
方法一:使用Samba+realmd加入域(适用于CentOS/RHEL 7+)
安装必要软件包
yum install -y samba-common samba-client realmd adcli sssd oddjob oddjob-mkhomedir
realmd
:域管理工具,简化加入域流程;adcli
:域操作工具,用于与域控交互;sssd
:系统安全服务守护进程,负责域用户认证。
配置网络与DNS
编辑/etc/resolv.conf
,确保DNS指向域控:
nameserver 域控IP search 域名(如example.com)
发现域信息
realm discover 域名(如example.com)
若输出域信息(如example.com
类型为active directory
),表示域可访问。
加入域
使用域管理员账户加入域:
realm join -U 域管理员用户 域名(如example.com)
根据提示输入域管理员密码,加入成功后会显示Successfully joined domain
。
配置SSSD与PAM
编辑/etc/sssd/sssd.conf
(加入域后自动生成),确保以下配置:
[sssd] domains = example.com config_file_version = 2 services = nss, pam, sudo [domain/example.com] ad_domain = example.com krb5_realm = EXAMPLE.COM realmd_tags = manages-system joined-with-adcli cache_credentials = True id_provider = ad access_provider = ad ldap_id_mapping = True use_fully_qualified_names = False
启动并启用SSSD服务:
systemctl enable --now sssd
配置自动创建家目录
编辑/etc/pam.d/system-auth
,确保包含以下行(加入域后realmd可能自动添加):
session required pam_mkhomedir.so skel=/etc/skel umask=0077
验证域用户
id 域用户@域名(如user1@example.com) # 查看域用户UID/GID su - 域用户@域名 # 切换到域用户(需首次输入密码)
方法二:使用Samba-tool加入域(适用于Ubuntu/Debian)
安装软件包
apt install -y samba samba-common realmd adcli sssd libnss-sss libpam-sss
配置网络与DNS
同方法一,确保DNS指向域控,编辑/etc/resolv.conf
或通过Netplan配置。
加入域
sudo realm join -U 域管理员用户 域名
输入密码后等待加入完成。
配置SSSD
编辑/etc/sssd/sssd.conf
(与方法一类似),重启SSSD:
systemctl restart sssd
测试登录
ssh 域用户@域名@LinuxIP # 远程登录域用户
两种方法对比
对比项 | Samba+realmd | Samba-tool |
---|---|---|
适用发行版 | CentOS/RHEL 7+ | Ubuntu/Debian |
配置复杂度 | 较低(realmd自动生成配置) | 较高(需手动调整sssd.conf) |
功能支持 | 支持SSSD高级特性(如缓存、策略映射) | 基础域认证,需额外配置扩展功能 |
家目录自动创建 | 通过pam_mkhomedir 实现 |
需手动配置 |
注意事项
- SELinux配置:若开启SELinux,需设置为
permissive
模式或安装相关策略:setenforce 0 # 临时关闭 yum install -y selinux-policy-sssd # 安装SSSD策略
- 防火墙规则:在Linux系统开放端口(如firewalld):
firewall-cmd --permanent --add-service={kerberos,ldap,samba} firewall-cmd --reload
- 用户权限映射:默认域用户UID/GID与Linux不一致时,需在
sssd.conf
中配置ldap_id_mapping = True
或手动映射。 - 退出域:若需退出域,执行
realm leave 域名
,并删除/etc/sssd/sssd.conf
、/etc/krb5.conf
中的域配置。
相关问答FAQs
Q1:加入域后,Linux系统无法使用域用户登录,提示“Authentication failure”,如何排查?
A:排查步骤如下:
- 检查SSSD服务状态:
systemctl status sssd
,确保未报错; - 查看SSSD日志:
tail -f /var/log/sssd/sssd.log
,确认是否成功获取域用户信息; - 检查Kerberos票据:
klist
,若无票据,执行kinit 域用户@域名
测试; - 验证PAM配置:
/etc/pam.d/system-auth
中是否包含pam_sss.so
; - 检查时间同步:
ntpq -p
确认与域控时间误差≤5分钟。
Q2:如何让Linux系统应用Windows域组策略(如共享文件夹权限)?
A:Linux系统原生不直接支持Windows组策略,可通过以下方式实现:
- SSSD策略映射:在
sssd.conf
中配置access_provider = ad
,支持基于域组的权限控制(如ad_access_filter
); - 第三方工具:使用
LGPO(Linux Group Policy Object)
或PowerShell for Linux
,通过脚本解析组策略并应用到Linux; - PAM脚本:编写PAM模块,读取域组策略并执行相应操作(如限制登录时间、挂载共享目录)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/27831.html