我正在设置一个小域。AD DC 在 Ubuntu 20.04 上运行 samba 4.11.6。我希望该 samba 实例还为用户主目录托管一个 cifs 共享,我可以将其安装在客户端计算机上。所以我想我会创建/home/MYDOMAIN
目录,所有域用户的主目录都会在其中。然后我会将其作为 AD DC 上的网络共享公开,并将其安装在同一位置的客户端计算机上 - /home/MYDOMAIN
— 这样使用域凭据登录的用户就会自动发现他们的主目录已安装。这是smb.conf
实现这一点的方法:
[global]
dns forwarder = 192.168.1.1
netbios name = ADDC
realm = MYDOMAIN.COM
server role = active directory domain controller
workgroup = MYDOMAIN
vfs objects = dfs_samba4 acl_xattr recycle
map acl inherit = Yes
template shell = /bin/bash
template homedir = /home/%D/%U
[users]
comment = User home directories
path = /home/MYDOMAIN
browseable = Yes
guest ok = No
create mask = 0640
directory mask = 0750
writeable = Yes
除了一个细节之外,一切都很好。如果我现在在同样运行 Ubuntu 20.04 的域成员 PC 上指定以下内容/etc/fstab
:
//addc.mydomain.com/users /home/MYDOMAIN cifs credentials=/root/.administratorcredentials,vers=3.0,iocharset=utf8 0 0
当我使用 挂载它时mount -a
,我得到了/home/MYDOMAIN
root:root 拥有的目录。该目录下的所有内容(包括用户的主目录)也归 root:root 所有,这意味着用户将无法写入他们的主目录,除非我让所有内容对每个人都可写,这有点违背了设置此域的初衷。
我读到,当将 samba 设置为 AD DC 时,它的文件共享功能在某种程度上仅限于支持 Windows ACL,而不支持 POSIX。这是怎么回事?我是否因此丢失了所有权信息?当我在 Windows 10 计算机上检查共享目录时,它们似乎归属于它们应该拥有的人。
是否有任何解决方法,或者可能有更好的想法来实现相同的目标 - 只保留域用户主目录的一个副本?
------------------ 编辑 2020 年 10 月 31 日 --------------------
经过大量的进一步挖掘,我找到了导致我的原始配置无法正常工作的可能原因,但尚未找到解决方案。可能是因为我的 idmap 设置不正确(或者根本没有设置)?我之所以这么说,是因为当我在 ad dc 上说以下内容时:
id [email protected]
我收到的响应包含 uid=3000034 和 gid=100(用户)。但在另一台电脑上,即我通过 sssd 加入的域成员,相同的命令产生的响应包含 uid=1001801118 和 gid=1001800513(域[电子邮件保护])
答案1
使用此代替 [用户]
[homes]
comment = Home Directories
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = %S
您必须在 /home/MYDOMAIN 下手动创建每个用户的主目录,或者在用户连接到共享时编写“root preexec”脚本来创建它们。