真实公司场景: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️⃣ 环境信息示例

角色

示例

AD 域

corp.example.com

域控 IP

10.0.0.10

TrueNAS IP

10.0.0.20

Linux

Rocky Linux 8.x

存储协议

NFS(推荐)

SMB 也可行,但 Linux + AD + Home 目录 场景下,NFS 稳定性和性能更好。


三、TrueNAS 端配置(一次性)

1️⃣ 创建存储数据集

在 TrueNAS 中:

  • Storage → Pools → Create Dataset

  • 名称:ad_home

  • ACL 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_home

  • Mapall 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 / 渲染农场 / 设计公司 / 高配工作站环境