在 TrueNAS SCALE(基于 Linux 的现代版本)中集成 局域网 Active Directory(AD)域
在 TrueNAS SCALE(基于 Linux 的现代版本)中集成 局域网 Active Directory(AD)域,可以实现使用域账号(如 DOMAIN\user)来管理 SMB 共享文件的权限(ACL),从而实现企业级集中身份认证与精细化权限控制。
以下是 完整配置流程(适用于 TrueNAS SCALE 22.12 及以上版本):
✅ 前提条件
- 局域网中已部署 Active Directory 域控制器(如 Windows Server 2016/2019/2022)
- 域名示例:
corp.local - DC IP:
192.168.1.10
- 域名示例:
- TrueNAS 主机已加入同一局域网,能解析域名、ping 通 DC
- DNS 配置正确:
- TrueNAS 的 DNS 服务器应指向 AD 域控(或能递归解析
_ldap._tcp.dc._msdcs.corp.local的 DNS)
- TrueNAS 的 DNS 服务器应指向 AD 域控(或能递归解析
- 防火墙允许以下端口(TCP/UDP):
- 53(DNS)、88(Kerberos)、135(RPC)、139/445(SMB)、389(LDAP)、636(LDAPS)
🔧 步骤一:配置网络与主机名(关键!)
AD 对主机名和 DNS 解析极其敏感。
- 进入 Network > Global Configuration
- Hostname: 设置为符合规范的名称(如
truenas) - Domain: 留空(不要填 AD 域名!)
- Nameserver 1: 填写 AD 域控 IP(如
192.168.1.10)
- Hostname: 设置为符合规范的名称(如
- 保存后,测试 DNS 解析:
# 在 Shell 中执行 nslookup corp.local nslookup truenas.corp.local # 应能解析到 TrueNAS IP⚠️ 如果
truenas.corp.local无法解析,需在 AD 域控的 DNS 中手动添加 A 记录。
🔐 步骤二:加入 Active Directory 域
- 进入 Directory Services > Active Directory
- 填写参数:
- Domain Name:
corp.local(你的 AD 域名) - Account Name:
administrator或有“加入计算机到域”权限的账户 - Password: 对应密码
- Site Name: 留空(除非你有 AD 站点)
- Enable: ✅ 勾选
- Domain Name:
- (可选)高级设置:
- Use default domain account: ✅ 建议勾选(自动创建机器账户)
- Disable password expiration: ✅ 建议勾选(避免机器账户过期)
- 点击 SAVE
✅ 成功后,状态应显示 HEALTHY,且 TrueNAS 会在 AD 中注册为计算机对象(如
TRUENAS$)。
🧪 步骤三:验证 AD 集成是否成功
-
进入 Shell(System Settings > Shell)
-
执行命令测试:
# 查看域用户 wbinfo -u # 查看域组 wbinfo -g # 测试 Kerberos 认证(应返回票据) kinit administrator@CORP.LOCAL klist若报错(如
NT_STATUS_NO_TRUST_SAM_ACCOUNT),说明未真正加入域,需检查 DNS 和时间同步。 -
确保时间同步(AD 要求时间偏差 < 5 分钟):
- TrueNAS 应启用 NTP,并与域控时间一致。
- 域控通常作为权威时间源。
📁 步骤四:创建数据集并启用 SMB + ACL 模式
- Storage > Pools > Add Dataset
- Name:
ad_share - Share Type: SMB
- ACL Type: NFSv4(这是支持 Windows ACL 的关键!)
- 其他默认 → Save
- Name:
💡
NFSv4 ACL模式才能映射 Windows 的精细权限(读/写/删除子文件夹等)。
🌐 步骤五:创建 SMB 共享(使用 AD 身份)
- Sharing > Windows Shares (SMB) > Add
- Path:
/mnt/tank/ad_share - Name:
AD_Share - Purpose:
Default share parameters - ✅ Enabled
- Path:
- 高级设置(重要):
- Auxiliary Parameters(可选但推荐):
vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes - 其他保持默认 → Save
- Auxiliary Parameters(可选但推荐):
👥 步骤六:配置 ACL 权限(使用域用户/组)
- 回到 Storage > Pools
- 找到
tank/ad_share,点击 ⋮ > Edit ACL - ACL Type: 确保是 NFSv4
- 点击 Add Item 添加权限条目:
- Who: 输入域用户或组,格式为:
- 用户:
CORP\\alice或alice@corp.local - 组:
CORP\\domain users或domain users@corp.local
- 用户:
- Type:
ALLOW - Permissions: 勾选所需权限(如
READ,WRITE,EXECUTE) - Apply permissions recursively: ✅ 勾选
- Who: 输入域用户或组,格式为:
- 点击 Save
✅ 此时,Windows 客户端用域账号登录后,访问
\\truenas\AD_Share将自动应用对应权限。
🖥️ 客户端测试(Windows)
- 用域账号(如
alice@corp.local)登录 Windows - 访问:
\\<TrueNAS_IP>\AD_Share - 尝试创建/删除文件 → 验证权限是否生效
🔧 常见问题排查
| 问题 | 解决方案 |
|---|---|
| “无法加入域” / “NT_STATUS_LOGON_FAILURE” | 检查账户密码、DNS 解析、时间同步 |
| wbinfo -u 无输出 | 检查 SSSD 服务状态:systemctl status sssd |
| ACL 保存时报错“Invalid user” | 确保输入格式正确(如 CORP\\username),且用户存在于域中 |
| 权限不生效 | 确认数据集 ACL 类型为 NFSv4,而非 POSIX |
| 中文用户名乱码 | 在 SMB 全局设置中添加:fruit:encoding = UTF-8dos charset = CP936 |
✅ 总结:关键要点
| 项目 | 要求 |
|---|---|
| DNS | 必须能正向/反向解析 TrueNAS 主机名 |
| 时间同步 | 与域控偏差 < 5 分钟 |
| 数据集 ACL 类型 | 必须选 NFSv4 |
| 用户格式 | DOMAIN\\username 或 username@domain.com |
| SMB 共享 | 无需单独创建本地用户,直接使用域身份 |
通过以上配置,TrueNAS 即可作为 AD 域成员服务器,无缝使用域账号管理文件权限,适用于企业文件服务器、部门共享等场景。
📌 提示:如需更高级功能(如 LDAP 同步、组策略映射),可结合 SSSD 或 Winbind 进行调优,但对大多数 SMB 共享场景,上述配置已足够。
No Comments