Linux 服务器加入 AD 域并通过 Samba 提供域账号文件共享
在企业内部环境中,Linux 文件服务器统一接入 Windows AD 域是一个非常常见的需求。
这样可以做到:
使用 AD 域账号统一认证
文件权限由 域用户 / 域组控制
运维侧无需维护本地账号体系
本文记录一次 Linux + Samba + Winbind 接入 AD 域并提供共享目录的完整实战过程,适用于生产环境参考。
一、环境说明
⚠️ 文中所有域名、IP、用户名均为示例替换,请根据实际环境调整。
二、安装所需软件包
首先安装 Samba、Winbind 以及 Kerberos 相关组件:
yum install -y \
samba samba-client samba-common \
samba-winbind samba-winbind-clients \
krb5-workstation
这些组件分别负责:
Samba:文件共享服务
Winbind:AD 用户/组映射
Kerberos:域认证核心机制
三、配置 Kerberos(krb5.conf)
Kerberos 是 AD 认证的基础,配置文件通常位于:
/etc/krb5.conf
示例(脱敏后):
[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
dns_lookup_kdc = true
default_realm = EXAMPLE.AD.LOCAL
[realms]
EXAMPLE.AD.LOCAL = {
kdc = 192.168.X.X
admin_server = 192.168.X.X
}
[domain_realm]
example.ad.local = EXAMPLE.AD.LOCAL
.example.ad.local = EXAMPLE.AD.LOCAL
关键点说明:
default_realm必须 全大写kdc和admin_server指向域控 IP域名映射必须正确,否则无法获取 Kerberos 票据
四、配置 NSS(让系统识别域用户)
修改 /etc/nsswitch.conf:
passwd: files winbind
shadow: files winbind
group: files winbind
作用:
让 Linux 系统在查询用户和组时,同时从 Winbind(AD) 中获取信息。
五、配置 Samba(smb.conf)
编辑 /etc/samba/smb.conf,以下为核心配置示例:
[global]
workgroup = EXAMPLE
security = ADS
realm = EXAMPLE.AD.LOCAL
password server = 192.168.X.X
idmap config * : backend = tdb
idmap config * : range = 100000-200000
idmap config EXAMPLE : backend = ad
idmap config EXAMPLE : schema_mode = rfc2307
idmap config EXAMPLE : range = 400000000-500000000
idmap config EXAMPLE : unix_nss_info = yes
template shell = /sbin/bash
template homedir = /home/%U
winbind use default domain = Yes
winbind enum users = yes
winbind enum groups = yes
winbind offline logon = yes
log file = /var/log/samba/log.%m
max log size = 50
ntlm auth = yes
interfaces = bond0
共享目录示例
[data_share]
comment = Data Share
path = /data_share
browseable = Yes
writable = Yes
read only = No
valid users = @"domain users"
create mask = 0775
directory mask = 0775
说明:
valid users使用 域用户组权限控制统一交由 AD
共享路径需提前创建并设置合适的 Linux 权限
六、加入 AD 域
执行域加入命令:
net ads join -U admin_user@example.ad.local
成功后会提示类似:
Joined 'SERVER-NAME' to realm 'EXAMPLE.AD.LOCAL'
七、启动并设置服务自启
systemctl start smb
systemctl start nmb
systemctl start winbind
systemctl enable smb
systemctl enable nmb
systemctl enable winbind
确认 Winbind 状态:
systemctl status winbind
八、验证域集成是否成功
1️⃣ 测试信任关系
wbinfo -t
返回 checking the trust secret succeeded 即正常。
2️⃣ 查看域用户
wbinfo -u
3️⃣ 查看域组
wbinfo -g
若能正常列出域用户/域组,说明 Linux 已成功接入 AD 域。
九、常见踩坑经验
时间不同步 = 100% 失败
👉 请务必与域控使用同一 NTP 源域名大小写错误会导致 Kerberos 异常
idmap range重叠会造成 UID/GID 冲突防火墙需放行 88 / 389 / 445 等端口
十、总结
通过 Samba + Winbind + Kerberos 的方式,可以让 Linux 文件服务器无缝接入 Windows AD 域,实现:
域账号统一登录
权限集中管理
运维复杂度显著降低
这套方案在 影视制作、研发部门、企业文件服务器 场景中非常成熟可靠,适合长期运行在生产环境。