我有一台 Redhat ES 6 服务器,该服务器已通过 Winbind 成功加入域(即,我可以使用域凭据登录到 Redhat 服务器,没有任何问题)。
此时,我希望将 Winbind 配置为根据域组自动将用户添加到本地组。例如,假设我在域上的用户名是“DOMAIN\coledot”,我是域组“Arbitrary Group”的成员。在 Redhat 计算机上的 /etc/group 文件中,我定义了本地组“testgrp”:
testgrp:x:10506:
如果我的理解Samba/Winbind 组映射文档是正确的,我应该能够使用以下命令将本地组“testgrp”映射到域组“任意组” net groupmap
:
net groupmap add ntgroup="Arbitrary Group" unixgroup=testgrp type=d
运行net groupmap list
确认映射已创建:
root@host # net groupmap list
[...]
Arbitrary Group (S-x-x-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxx) -> testgrp
但是,当我运行该groups
命令时,即使我的用户显示为“任意组”组的一部分,也找不到“testgrp”。
我的问题有两个:
1)我的理解net groupmap
正确吗?
2)我如何完成我最初的任务(通过域组将域用户映射到本地组)?
答案1
我相信您可以在 /etc/samba/smb.conf 文件中完成此操作。如果您的本地 Linux 权限正确,则可以使用“强制组”字符串来确保您以正确的组成员身份进行连接。人们往往会感到困惑的是,用户可能已经是本地 Linux 组的成员,但就 SMB 而言,您从 Windows“连接”的组才是最重要的。
EXAMPLE:
[someshares]
path=/path/to/someshares
writable = yes
browsable = yes
valid users = @somegroup
create mask = 0775
force create mode = 0775
directory mask = 0775
force group = somegroup
答案2
据我所知,从 SMB 组到 Linux 组的映射仅在域控制器上完成。成员服务器自动执行此操作(通过 LDAP 全局执行或通过 idmap 本地执行)。
我刚刚尝试通过 usermod 将 winbind 用户添加到本地组。失败了。也许用户完全由文件或完全由 winbind 管理(参考 nsswitch.conf),但不能同时由两者管理。
如果此方法有效,那么您可以通过“getent group”获取组成员,并将他们添加到本地组。这可以定期执行(如果您无权访问 DC),并且只会在 DC 上创建帐户和首次访问成员服务器(如果此访问在下一次常规检查之前)之间的时间出现问题。