在Linux系统中加入Windows域是实现统一身份认证、权限管理和资源访问的重要操作,尤其在企业环境中能简化管理流程,本文将详细介绍Linux加入Windows域的完整步骤、所需工具及注意事项,涵盖环境准备、配置实施、测试验证等关键环节。
环境准备与需求分析
在开始操作前,需确保满足以下基础条件,避免因环境不兼容导致失败:
系统与软件要求
- 操作系统:支持主流Linux发行版,如CentOS 7+/RHEL 7+、Ubuntu 18.04+、Debian 10+等(不同发行版工具包名称可能略有差异)。
- 网络连通性:Linux服务器能与域控制器(DC)正常通信,确保域名解析(如通过DNS服务器指向DC)、网络可达(禁用防火墙或开放相关端口)。
- 时间同步:Linux服务器与域控制器时间必须一致(误差≤5分钟),可通过
ntpdate
或chrony
同步时间,避免Kerberos认证失败。 - 权限要求:需使用本地管理员/root账户操作,并提供域管理员(如
Domain Admins
组)的账户及密码。
端口与协议开放
Windows域依赖多个关键端口和协议,需在Linux服务器和防火墙(如iptables、firewalld、云安全组)中开放:
端口 | 协议 | 用途 |
---|---|---|
88 | TCP/UDP | Kerberos认证 |
135 | TCP | RPC(远程过程调用) |
389 | TCP/UDP | LDAP目录服务 |
445 | TCP | SMB文件共享 |
464 | TCP/UDP | Kerberos密码修改 |
636 | TCP | LDAPS(加密LDAP) |
3268 | TCP | LDAP全局编录 |
53 | TCP/UDP | DNS域名解析 |
安装与配置域管理工具
Linux加入Windows域的核心工具包括realmd
(域发现与加入)、sssd
(系统安全服务守护进程,负责身份认证和缓存)、samba
(提供SMB/CIFS支持)等,以下以CentOS 7和Ubuntu 20.04为例说明安装步骤:
CentOS/RHEL系统
# 更新软件包缓存 sudo yum update -y # 安装realmd、sssd、samba及相关依赖 sudo yum install -y realmd sssd sssd-tools samba-common-tools oddjob oddjob-mkhomedir
Ubuntu/Debian系统
# 更新软件包列表 sudo apt update && sudo apt upgrade -y # 安装realmd、sssd、samba及相关依赖 sudo apt install -y realmd sssd sssd-tools samba-common-tools libnss-sss libpam-sss oddjob-mkhomedir
验证工具安装
安装完成后,可通过以下命令检查工具是否可用:
realm discover --help # 查看realmd帮助 sssd --version # 检查sssd版本
加入Windows域操作
发现域信息
使用realm discover
命令扫描网络中的域,确认域名及域控制器信息:
sudo realm discover example.com # 替换为实际域名
若成功,会显示域名、域控制器地址、支持的 Kerberos 版本等信息,
example.com
type: kerberos
realm: EXAMPLE.COM
domain-name: example.com
configured: no
server-software: active-directory
client-software: sssd
required-package: oddjob
required-package: oddjob-mkhomedir
required-package: sssd
required-package: sssd-tools
required-package: samba-common-tools
加入域
使用realm join
命令加入域,需提供域管理员账户(格式为域名管理员账户
,如example.comdomainadmin
):
sudo realm join example.com -U 'domainadmin' # 按提示输入域管理员密码
若需指定域控制器(DC),可添加--server
参数:
sudo realm join example.com -U 'domainadmin' --server=dc1.example.com
加入成功后,会提示Successfully joined realm example.com
。
配置自动创建家目录
域用户首次登录时,系统需自动创建家目录,通过oddjobd
服务实现:
sudo systemctl enable --now oddjobd # 启用并设置开机自启 sudo authconfig --enablemkhomedir --update # 启用自动创建家目录
配置SSSD与PAM模块
sssd
负责与域控制器交互,管理用户认证和缓存,需修改配置文件/etc/sssd/sssd.conf
(首次加入域时会自动生成,可手动优化):
[sssd] domains = example.com config_file_version = 2 services = nss, pam, sudo [domain/example.com] id_provider = ad auth_provider = ad chpass_provider = ad access_provider = ad ldap_schema = ad ldap_uri = ldap://dc1.example.com # 域控制器LDAP地址 ldap_base_dn = dc=example,dc=com # 域名后缀 ldap_sasl_authid = $hostname # Linux服务器主机名 krb5_realm = EXAMPLE.COM # Kerberos大写域名 krb5_server = dc1.example.com # Kerberos服务器地址 cache_credentials = true # 缓存用户凭据 fallback_homedir = /home/%d/%u # 家目录路径模板 default_shell = /bin/bash # 默认登录shell
配置完成后,重启sssd
服务使生效:
sudo systemctl restart sssd sudo systemctl enable sssd
验证域成员身份
检查域状态
sudo realm list # 显示已加入的域信息,确认“configured: yes”
查询域用户
id 'example.comuser01' # 替换为域用户名,若显示用户ID、组等信息则成功
测试SSH登录
尝试通过SSH以域用户身份登录Linux服务器:
ssh user01@linux-server-ip # 输入域用户密码,若成功登录则验证通过
常见问题与故障排除
-
加入域失败,提示“Cannot join realm: Invalid credentials”
- 原因:域管理员账户或密码错误,或账户权限不足(需确保账户属于
Domain Admins
组)。 - 解决:确认账户信息,使用
kinit
测试Kerberos认证:kinit user01@example.com
。
- 原因:域管理员账户或密码错误,或账户权限不足(需确保账户属于
-
域用户登录后无法创建家目录
- 原因:
oddjobd
服务未启动或pam_mkhomedir.so
模块未加载。 - 解决:检查
/etc/pam.d/system-auth
文件中是否包含session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
。
- 原因:
FAQs
Q1:加入域后,如何让域管理员组拥有Linux服务器的sudo权限?
A:修改/etc/sudoers
文件,添加以下内容(%Domain Admins
为域管理员组名,需替换为实际组名,格式为%域名组名
):
echo '%example.comdomain admins ALL=(ALL) ALL' | sudo tee -a /etc/sudoers
若组名包含空格,需用反斜杠转义,如%example.comdomain admins
。
Q2:如何从域中移除Linux服务器?
A:使用realm leave
命令,并清理相关配置:
sudo realm leave example.com # 退出域 sudo systemctl stop sssd # 停止sssd服务 sudo rm -rf /var/lib/sss/db/* # 清除sssd缓存 sudo authconfig --disablesssd --disablesssdauth --update # 禁用sssd认证
重启服务器后,域配置将完全清除。
通过以上步骤,Linux服务器可成功加入Windows域,实现与AD域的无缝集成,支持域用户统一登录、权限管控及资源访问,提升企业IT环境的管理效率和安全性。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/20136.html