Linux使用samba控制Active Directory指定uid

Linux使用samba控制Active Directory指定uid,gid,primaryGroup

1. ID映射问题

Linux 和 Windows 在内部都不是根据用户名来引用用户的,而是使用唯一的内部标识符。Windows 使用安全标识符(即 SID),它能够唯一标识 Windows 域中的每个用户,其结构长度可以变化。SID 也包含唯一域标识符,以便 Windows 区别不同域中的用户。
Linux 计算机上的每个用户都有一个 UID,而此 UID 只是一个 32 位的整数。但是 UID 的范围受限于计算机本身。在某台 Linux 计算机上具有 UID 436 的用户,不一定与另一台 Linux 计算机上具有 UID 436 的用户相同。因此,用户必须登录他需要访问的每台计算机,这显然不是理想的情况。
解决此问题的常用方法是,使用 Network Information System (NIS) 或共享 LDAP 目录来提供网络身份验证。网络身份验证系统提供用户的 UID,而使用该身份验证系统的所有 Linux 计算机都将共享相同的用户和组标识符。在这种情况下,我将使用 Active Directory 来提供唯一的用户和组标识符。

2. 两种策略

为每个用户和组创建 UID,并将该标识符与各自的对象一起存储到 Active Directory 中。这样一来,当 Winbind 对用户进行身份验证时,它就可以查询该用户的 UID,然后将它提供给Linux作为该用户的内部标识符。Winbind 将此方案称为 Active Directory ID 映射,或 idmap_ad。idmap_ad 插件为 Winbind 提供了一种从使用 RFC2307/SFU 架构扩展的 AD 服务器读取 id 映射的方法。该模块仅实现“idmap”API,并且是只读的。映射必须由管理员提前提供,方法是在 AD 中添加用户的 uidNumber 属性和组的 gidNumber 属性。

在 Windows Server 2012 R2 中,Microsoft 弃用 Unix 身份管理 (IDMU) 和 NIS 服务器角色,从 Windows Server 2016 Technical Preview 开始,该角色将不包含在内。

Windows Server 2012 R2需要安装管理工具:
Dism.exe /online /enable-feature /featurename:adminui /all
安装NIS服务器:
Dism.exe /online /enable-feature /featurename:nis /all
安装密码同步:
Dism.exe /online /enable-feature /featurename:psync /all

3. samba配置指定uid和gid

从 Samba 4.6.0 版开始:
winbind nss info参数已被替换为idmap config DOMAIN : unix_nss_info的adID映射后端支持两种模式,在设定idmap config DOMAIN : unix_nss_info在参数[global]中的部分smb.conf的文件:
idmap config DOMAIN : unix_nss_info = yes:从 Active Directory (AD) 读取所有信息:

  1. 用户:帐户名、UID、登录外壳、主目录路径和主要组。
  2. 组:组名和 GID。

这些设置是基于 DOMAIN 设置的,这意味着您可以为每个 DOMAIN 设置不同的设置。如果用户缺少 RFC2307 属性,则登录 shell 和主目录由smb.conf文件中与用户无关的设置自动设置。

idmap config DOMAIN : unix_nss_info = no:仅从 AD 读取以下值:

  1. 用户:帐户名称、UID 和主要组。
  2. 登录外壳和主目录由smb.conf文件中与用户无关的设置自动设置。
  3. 组:组名和 GID
[global]
...
# 本地内置帐户的默认 ID 映射配置
# 和组域成员。默认 (*) 域:
# - 不得与任何域 ID 映射配置重叠!
idmap config * : backend = tdb
idmap config * : range = 3000-7999
# SAMDOM 域的
idmap config ZXREGION :backend = ad
idmap config ZXREGION :schema_mode = rfc2307
idmap config ZXREGION : range = 16777216-33554431
idmap config ZXREGION : unix_nss_info = yes

idmap config ZXREGION : unix_primary_group = yes
vfs objects = acl_xattr
#此布尔参数控制smbd(8)是否尝试将存储在Windows acl中的“inherit”和“protected”
#访问控制条目标志映射到名为user.SAMBAPAI的扩展属性中。
map acl inherit = yes
#当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的相关属性(只读、系统、隐藏、存档属性)。默认为no
store dos attributes = yes

4. Linux与AD域Group同步

现在有一个新设置unix_primary_group,这允许您使用另一个组作为用户主要组而不是域用户。如果使用 设置unix_primary_group = yes,则从用户 AD 对象中的 gidNumber 属性获取用户主要组。如果设置为unix_primary_group = no,则用户主要组通过“primaryGroupID”属性计算。默认为“否”。

组类型:
1.安全组提供对象的逻辑分组,组本身可用作访问控制列表中的ACL 。 当某个安全组被授予对某个对象的访问权限时,该安全组的所有成员将自动接收对该对象的相同访问权限。
通讯组提供对象的逻辑分组,但不能提供任何访问权限。不能用作 ACL 。 通讯组仅用于分组目的。 例如,分发列表可用于电子邮件应用程序(如 Exchange),以便向用户集合发送电子邮件。

Group作用范围:

范围可能成员作用域转换可授予权限可能的成员
通用同一林中任何域的帐户。同一林中任何域的全局组。同一林中的任何域的其他通用组。可转换为域本地范围。只要组不包含任何其他通用组,就可以将其转换为全局范围。 位于同一林中的任何域或信任林。同一林中的其他通用组。同一林中或信任林中的域本地组。同一林或信任林中的计算机上的本地组。
全局同一域中的帐户。同一域中的其他全局组。只要该组不是任何其他全局组的成员,就可以将其转换为通用作用域。位于同一林中的任何域或信任域或林。同一林中任何域的通用组。同一域中的其他全局组。来自同一林中的任何域或来自任何信任域的域本地组。
本地域任何域或任何受信任域中的帐户。来自任何域或任何受信任域的全局组。同一林中任何域的通用组。同一域中的其他域本地组。 只要组不包含任何其他域本地组,就可转换为通用作用域。在同一域中。同一域中的其他域本地组。同一域中计算机上的本地组,但不包括具有众所周知 Sid 的内置组。

设置属性GroupType,它使用以下位标志指定组类型和作用域:
(1) ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP
(2) ADS_GROUP_TYPE_GLOBAL_GROUP
(3) ADS_GROUP_TYPE_UNIVERSAL_GROUP
(4) ADS_GROUP_TYPE_SECURITY_ENABLED

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值