1. 问题背景

TrueNAS 上创建数据集:

/mnt/large-pool/home

SMB 共享:

\\192.168.0.40\home

Windows 访问时报错:

You do not have permission to access this folder

2. 问题原因

检查目录权限:

ls -ld /mnt/large-pool/home

结果:

drwxrwx---+ root wheel

权限解释:

项 含义


owner root group wheel mode 770

只有以下用户可以访问:

  • root

  • wheel 组成员

普通用户(如 epiphany)不属于 wheel 组,因此无法进入目录。

结果:

SMB 登录成功,但文件系统权限拒绝访问。


3. 临时修复方法

修改 home 根目录权限:

chmod 755 /mnt/large-pool/home

权限含义:

755
rwx r-x r-x

效果:

用户 权限


owner 完整权限 group 可进入 others 可进入

这样所有用户可以进入 home,但不能修改。


4. 用户目录权限结构

推荐目录结构:

/mnt/large-pool/home
 ├── epiphany
 ├── cm313
 ├── fuyihang
 ├── minghao
 └── wangxin

每个用户目录权限:

chown -R epiphany:epiphany /mnt/large-pool/home/epiphany
chmod 700 /mnt/large-pool/home/epiphany

权限:

700
rwx------

效果:

用户 能访问


自己 ✔ 其他用户 ✖


5. 企业级方案:Samba homes(推荐)

企业 NAS 通常不共享整个 home 目录,而是使用 Samba homes 功能。

特点:

  • 每个用户自动映射自己的目录

  • 用户看不到别人目录

  • 不需要复杂 ACL

访问方式:

\\192.168.0.40

Windows 自动显示:

epiphany

对应路径:

/mnt/large-pool/home/epiphany

6. TrueNAS homes 配置步骤

6.1 创建 home 数据集

Storage
 → Datasets
 → Add Dataset

名称:

home

路径:

/mnt/large-pool/home

权限:

755

6.2 创建用户

Accounts
 → Users
 → Add

关键设置:

Home Directory:
/mnt/large-pool/home/%U

%U 代表用户名。

系统会自动生成:

/mnt/large-pool/home/username

6.3 创建 SMB homes 共享

Sharing
 → Windows Shares (SMB)
 → Add

设置:

Path:
/mnt/large-pool/home
​
Name:
homes

启用:

Use as Home Share

6.4 重启 SMB

service samba_server restart

7. 访问效果

Windows 打开:

\\192.168.0.40

用户登录:

username: epiphany
password: ***

只会看到:

epiphany

实际路径:

/mnt/large-pool/home/epiphany

用户无法访问其他用户目录。


8. 推荐最终权限结构

/mnt/large-pool/home        755
/mnt/large-pool/home/user   700

示例:

home
 ├── epiphany  (700)
 ├── cm313     (700)
 ├── minghao   (700)

9. 常用排查命令

查看数据集:

zfs list

查看权限:

ls -ld /mnt/large-pool/home

检查 SMB 配置:

testparm -s

查看 Samba 用户:

pdbedit -L

重启 SMB:

service samba_server restart

10. 最佳实践总结

  • 不共享整个 /home

  • 使用 Samba homes

  • 用户目录 700

  • home 根目录 755

该配置方式与企业 Linux / NAS 服务器标准一致。