Ubuntu/Linux下正确挂载Samba共享并实现AD用户权限映射的技术咨询
Ubuntu/Linux下正确挂载Samba共享并实现AD用户权限映射的技术咨询
兄弟我太懂你这种困扰了!Windows下AD用户权限映射顺得不行,每个用户创建的文件所有者都清清楚楚,到Ubuntu这里一挂载就变成“挂载用户通吃”,完全不符合安全要求对吧?别慌,咱们一步步把这个问题解决掉,核心就是让Ubuntu能识别AD域用户,并且在挂载SMB共享时自动映射正确的权限。
第一步:先让Ubuntu加入你的AD域
这是基础!只有Ubuntu认了AD用户,后面的权限映射才能生效。
- 先装必要的工具包:
sudo apt install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit - 加入AD域(把
YOUR-DOMAIN.COM换成你的实际域名,your-admin-user换成域管理员账号):sudo realm join YOUR-DOMAIN.COM -U your-admin-user - 验证是否加入成功:执行
realm list,能看到你的域名信息、用户组映射就说明成了。
第二步:用正确的参数挂载SMB共享
不管是临时挂载还是写到fstab里,关键参数必须加对,才能实现多用户权限隔离:
临时挂载测试(先验证效果)
sudo mount -t cifs //truenas-server/your-share-name /mnt/your-mount-point -o credentials=/etc/smb-creds,multiuser,cruid=$(id -u),sec=ntlmsspi
参数解释:
multiuser:允许多个AD用户访问同一个挂载点,每个用户用自己的身份cruid=$(id -u):指定当前登录用户为凭证初始化用户,确保挂载时用你的AD身份sec=ntlmsspi:用和AD兼容的NTLMSSP认证协议,避免权限验证失败credentials=/etc/smb-creds:存储AD凭证的文件,内容格式如下(记得把权限设成chmod 600 /etc/smb-creds,防止泄露):username=your-domain-user password=your-domain-pass domain=YOUR-DOMAIN.COM
写到fstab里永久挂载
如果测试没问题,把下面一行加到/etc/fstab里(替换成你的实际路径):
//truenas-server/your-share-name /mnt/your-mount-point cifs credentials=/etc/smb-creds,multiuser,cruid=%U,sec=ntlmsspi 0 0
这里cruid=%U表示自动用当前登录用户的ID,每个用户登录后都会用自己的AD身份访问共享。
第三步:验证权限映射效果
完成上面两步后,用不同的AD用户登录Ubuntu,在挂载的共享里创建文件,然后执行ls -l查看所有者——应该会显示对应的AD用户(比如domain\username或者username@domain.com),和Windows下的效果完全一致!
额外注意事项
- 确保TrueNAS的SMB共享设置里已经开启了允许AD用户访问,并且共享权限和NTFS权限(如果用的是Windows风格权限)配置正确,给对应的AD组/用户分配读写权限。
- 如果遇到权限报错,可以先用
smbclient //truenas-server/your-share-name -U your-domain-user测试能不能正常访问,验证凭证和共享配置是否没问题。
备注:内容来源于stack exchange,提问作者n00by0815




