RHEL 6S主域控制器配置实战指南聚焦Samba服务实现Windows域环境管理,内容涵盖系统环境准备(更新依赖、关闭SELinux/防火墙)、Samba核心配置(定义域参数、设置域用户数据库)、Kerberos认证集成及DNS服务联动,详细解析smb.conf关键参数(如workgroup、server role、passdb backend),实战演示域用户创建、权限分配及客户端加入域流程,最终实现Windows/Linux客户端统一身份认证,为企业内网集中管控提供可落地方案,兼顾安全性与易用性。
在企业环境中,主域控制器(Domain Controller, DC)是集中管理用户身份认证、权限控制、组策略等核心功能的关键组件,RHEL 6S(Red Hat Enterprise Linux 6 Server)作为经典的Linux企业级操作系统,可通过Samba服务模拟Windows域控制器,实现跨平台(Windows/Linux)的统一身份管理,本文将详细介绍RHEL 6S下主域控制器的完整配置流程,涵盖环境准备、服务安装、核心配置、用户管理及验证测试等环节,帮助读者快速搭建稳定可靠的域环境。
环境准备
系统要求
- 操作系统:RHEL 6.5及以上版本(确保支持Samba 3.6.x及Kerberos 1.10.x)
- 硬件配置:CPU≥1核,内存≥1GB,硬盘≥20GB(可根据用户规模调整)
- 网络环境:静态IP地址、正确的主机名解析(建议内部DNS服务器)
网络配置
以域控制器IP为168.1.10、域名为example.com、主机名为dc.example.com为例,配置如下:
# 设置静态IP(以eth0为例) vi /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=static IPADDR=192.168.1.10 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=192.168.1.10 # 指向自身(若部署内部DNS) ONBOOT=yes # 配置主机名 hostname dc.example.com vi /etc/sysconfig/network HOSTNAME=dc.example.com # 配置hosts文件 vi /etc/hosts 192.168.1.10 dc.example.com dc
重启网络服务使配置生效:service network restart。

关闭防火墙与SELinux
域控制器需开放多个端口(如139、445、88等),为简化测试,先临时关闭防火墙并设置SELinux为宽松模式(生产环境建议精细配置策略):
# 关闭防火墙 service iptables stop chkconfig iptables off # 设置SELinux为permissive模式(仅记录不阻止) setenforce 0 vi /etc/selinux/config SELINUX=permissive
配置Yum源
确保系统能访问官方或第三方软件源,若使用RHEL官方源,需注册系统并启用“Optional”仓库(包含Samba域相关组件),若为本地源,请提前挂载安装光盘并配置Yum仓库。
安装必要软件包
RHEL 6S下,主域控制器依赖Samba(提供文件共享与身份认证)、Kerberos(安全认证)、Winbind(域用户映射)等组件,通过Yum安装以下软件包:
yum install samba samba-client samba-common samba-domain krb5-workstation pam_krb5 winbind -y
安装完成后,验证软件包版本:
smbd --version # 应显示Samba 3.6.x kinit --version # 应显示Kerberos 1.10.x
核心配置步骤
配置Kerberos认证服务
Kerberos是域认证的核心,负责颁发和管理票据(Ticket),需配置/etc/krb5.conf文件,定义域信息与KDC(Key Distribution Center,即域控制器)地址:
vi /etc/krb5.conf
[libdefaults]
default_realm = EXAMPLE.COM # 必须为大写,与域名对应
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
EXAMPLE.COM = {
kdc = dc.example.com
admin_server = dc.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
注意:default_realm必须为大写,且与[realms]中的EXAMPLE.COM严格一致。
测试Kerberos认证:
# 创建管理员主体(admin@EXAMPLE.COM,密码需设置) kadmin.local -q "addprinc admin/admin" # 测试获取票据 kinit admin/admin@EXAMPLE.COM klist # 查看票据列表
配置Samba主配置文件
Samba通过/etc/samba/smb.conf实现域控制器功能,需重点配置全局参数和共享目录,以下是核心配置:
vi /etc/samba/smb.conf
[global]
workgroup = EXAMPLE # 域名(小写,与Windows域对应)
netbios name = DC # NetBIOS名称,客户端识别用
server string = Samba Domain Controller on RHEL 6S
security = user # 安全模式:user(域认证)
passdb backend = tdbsam # 密码数据库格式(tdbsam适合中小规模)
domain logons = yes # 启用域登录功能
os level = 255 # 优先级越高,越可能成为域主浏览器
preferred master = yes # 优先成为域主控制器
domain master = yes # 强制作为域主控制器
dns proxy = no # 禁用DNS代理(若部署内部DNS)
log file = /var/log/samba/log.%m # 日志文件(按主机名区分)
max log size = 50 # 日志最大50MB
# Kerberos集成
realm = EXAMPLE.COM # Kerberos域(大写)
kdc = dc.example.com # KDC地址
admin server = dc.example.com # Kerberos管理服务器
# 登录脚本与配置文件路径
logon script = logon.bat # 客户端登录脚本(需创建)
logon path = \\dc\profiles\%u # 漫游配置文件路径(需创建共享)
logon drive = Z: # 登录映射网络盘符
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon # 登录脚本存放目录
browseable = no
read only = yes
guest ok = no
[profiles]
comment = User Profiles
path = /var/lib/samba/profiles # 漫游配置文件目录
browseable = no
read only = no
create mask = 0600
directory mask = 0700
guest ok = no
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S # 仅允许用户访问自己的家目录
关键参数说明:
security = user:启用用户级安全认证,是域控制器的基础。domain logons = yes:允许客户端通过域控制器登录。os level = 255:确保域控制器在浏览器选举中优先级最高。
配置完成后,使用testparm检查语法:

testparm -s /etc/samba/smb.conf
创建共享目录并设置权限
根据smb.conf中的配置,创建必要的共享目录:
# 创建netlogon目录(存放登录脚本) mkdir -p /var/lib/samba/netlogon chmod 755 /var/lib/samba/netlogon # 创建profiles目录(存放漫游配置文件) mkdir -p /var/lib/samba/profiles chmod 1777 /var/lib/samba/profiles # 设置sticky位,确保用户可创建自己的目录 # 创建家目录基础路径 mkdir -p /home/samba chmod 777 /home/samba
创建域用户与组
(1)创建管理员账户
# 创建Linux系统用户(同步为Samba用户) useradd admin passwd admin # 设置用户密码 # 将用户添加到Samba密码数据库(并设置域密码) smbpasswd -a admin
(2)创建域用户组
# 创建域用户组(如"Domain Users") groupadd -g 10000 "Domain Users"
(3)批量创建普通用户
可通过脚本批量创建,例如创建用户user1:
useradd user1 passwd user1 smbpasswd -a user1 usermod -G "Domain Users" user1 # 添加到域用户组
启动并配置服务
Samba域控制器依赖smb(Samba核心服务)、nmb(NetBIOS名称服务)、winbind(域用户映射)三个服务,启动服务并设置开机自启:
# 启动服务 service smb start service nmb start service winbind start # 设置开机自启 chkconfig smb on chkconfig nmb on chkconfig winbind on
验证服务状态:
service smb status service nmb status service winbind status
验证域控制器功能
Windows客户端加入域
以Windows 10为例:
- 右键“此电脑”→“属性”→“更改设置”→“计算机名”→“更改”,输入域名
example.com,点击“确定”。 - 输入域管理员账户
admin及密码,成功后提示“欢迎加入example.com域”。 - 重启Windows客户端,使用域账户
admin@example.com登录。
Linux客户端加入域
以RHEL 6S客户端为例,安装oddjob和oddjob-mkhomedir(自动创建家目录):
yum install oddjob oddjob-mkhomedir -y
配置/etc/samba/smb.conf(客户端):
[global]
security = domain
workgroup = EXAMPLE
realm = EXAMPLE.COM
password server = dc.example.com
winbind use default domain = yes
winbind offline logon = yes
启动winbind服务并加入域:
service winbind start chkconfig winbind on net ads join -U admin # 输入admin的密码
验证域用户:
getent passwd # 查看域用户(如EXAMPLE\user1) su - user1@example.com # 切换到域用户(需输入密码)
域控制器端验证
- 查看域用户列表:
wbinfo -u # 列出所有域用户
- 查看域组列表:
wbinfo -g # 列出所有域组
- 测试Samba共享:
smbclient -L //dc.example.com -U admin # 列出共享资源
常见问题与解决
客户端加入域失败
- 原因1:网络或DNS解析问题。
解决:确保客户端DNS指向域控制器(168.1.10),测试ping dc.example.com是否通。 - 原因2:Kerberos认证失败。
解决:检查/etc/krb5.conf中的default_realm和kdc配置,重新测试kinit admin/admin@EXAMPLE.COM。
Samba服务启动失败
- 原因:
smb.conf语法错误或目录权限问题。
解决:运行testparm检查语法,确认共享目录(如/var/lib/samba/netlogon)权限为755。
域用户无法登录
- 原因:
winbind服务未启动或域用户未同步。
解决:启动winbind服务,运行wbinfo -u确认用户列表,检查/etc/nsswitch.conf中是否包含winbind(如passwd: files winbind)。
通过以上步骤,已成功在RHEL 6S上搭建了主域控制器,实现了跨平台的身份认证与用户管理,虽然RHEL 6S已进入生命周期末期,但在遗留系统维护或特定企业环境中,其稳定性和兼容性仍具有价值,实际生产环境中,建议结合内部DNS服务、精细化防火墙策略及定期备份(如备份smb.conf、/etc/krb5.conf及Samba密码数据库),确保域环境的安全可靠。
本文以Samba 3.6.x为基础,若需支持更高级的域功能(如组策略对象),可考虑升级到RHEL 7+及Samba 4.x版本,其原生支持AD(Active Directory)协议,功能更完善。


