Linux 通过 AD 域控登录并将用户 Home 目录挂载到 TrueNAS
真实公司场景:Linux 工作站本地磁盘只用于系统,所有域用户的 Home 目录统一放在 TrueNAS 上,集中存储、集中备份、权限可控。
一、整体架构说明
AD 域控(Windows Server)
│
│ LDAP / Kerberos
▼
Linux 工作站(Rocky / CentOS / Ubuntu)
│
│ NFS / SMB
▼
TrueNAS(ZFS 存储池,集中 Home 目录)
AD:负责用户认证、账号生命周期
Linux:不保存用户数据,只负责计算/使用
TrueNAS:统一存放
/home/DOMAIN/username
核心目标:
Linux 直接使用 AD 用户登录
用户登录后 Home 自动挂载到 TrueNAS
本地磁盘 不占用任何 Home 空间
二、环境准备
1️⃣ 环境信息示例
SMB 也可行,但 Linux + AD + Home 目录 场景下,NFS 稳定性和性能更好。
三、TrueNAS 端配置(一次性)
1️⃣ 创建存储数据集
在 TrueNAS 中:
Storage → Pools → Create Dataset
名称:
ad_homeACL Type:POSIX
Case Sensitivity:Sensitive
路径示例:
/mnt/tank/ad_home
2️⃣ 启用 NFS 服务
Services → NFS → Enable
勾选:
Start Automatically
创建 NFS 共享
Sharing → Unix Shares (NFS) → Add
Path:
/mnt/tank/ad_homeMapall User / Group:留空
Security:SYS
勾选:
Enabled
Allow Non-root Mount
⚠️ 不要 mapall,否则 AD 用户 UID/GID 会失效
四、Linux 加入 AD 域
以下以 Rocky Linux 8 为例。
1️⃣ 安装所需软件
dnf install -y \
realmd sssd oddjob oddjob-mkhomedir \
adcli samba-common-tools \
krb5-workstation nfs-utils
2️⃣ 设置主机名 & DNS
hostnamectl set-hostname linux01.corp.example.com
/etc/resolv.conf:
nameserver 10.0.0.10
search corp.example.com
DNS 必须指向域控,否则 99% 会失败
3️⃣ 加入域
realm discover corp.example.com
realm join corp.example.com -U Administrator
验证:
realm list
五、SSSD 配置(关键)
编辑 /etc/sssd/sssd.conf:
[sssd]
services = nss, pam
config_file_version = 2
domains = corp.example.com
[domain/corp.example.com]
ad_domain = corp.example.com
krb5_realm = CORP.EXAMPLE.COM
realmd_tags = manages-system joined-with-samba
id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = ad
use_fully_qualified_names = False
fallback_homedir = /home/%d/%u
default_shell = /bin/bash
ldap_id_mapping = True
cache_credentials = True
权限:
chmod 600 /etc/sssd/sssd.conf
systemctl restart sssd
六、将 Home 目录挂载到 TrueNAS
方案一(推荐):Autofs 按需挂载
用户登录才挂载,不登录不占用资源
1️⃣ 安装 autofs
dnf install -y autofs
2️⃣ 配置 auto.master
vim /etc/auto.master
添加:
/home /etc/auto.home
3️⃣ 配置 auto.home
vim /etc/auto.home
内容:
* -rw,soft,intr,nosuid,nodev 10.0.0.20:/mnt/tank/ad_home/&
说明:
*:匹配所有用户名&:替换为登录用户名实际路径示例:
/home/corp/zhangsan -> TrueNAS:/mnt/tank/ad_home/zhangsan
4️⃣ 启动服务
systemctl enable --now autofs
七、首次登录测试
ssh zhangsan@linux01
验证:
mount | grep home
df -h /home/corp/zhangsan
结果应显示:
10.0.0.20:/mnt/tank/ad_home/zhangsan
✅ 本地磁盘 不会增长
八、TrueNAS 权限与 UID 问题说明
SSSD + AD:Linux 侧自动生成 UID/GID
NFS + POSIX ACL:权限基于 UID/GID
建议:
所有 Linux 主机使用 同一 AD
不混用本地用户 UID
不要手动 chown 成本地用户
九、生产环境优化建议
🔒 安全
NFS 仅允许 Linux 子网访问
防火墙限制 2049 端口
⚡ 性能
TrueNAS 使用 SSD 元数据 vdev
Linux 使用
noatime
🧯 稳定性
autofs 而非 fstab
sssd 启用缓存,防止短时断域
十、总结
✔ Linux 无状态化
✔ 用户数据集中存储
✔ AD 统一身份管理
✔ TrueNAS 统一备份 / 快照 / 审计
这套方案非常适合:VFX / 渲染农场 / 设计公司 / 高配工作站环境