samba username map
此选项允许您指定包含从客户端到服务器的用户名映射的文件。 这可以用于多种目的。 最常见的是将用户在 DOS 或 Windows 机器上使用的用户名映射到 UNIX 机器上使用的用户名。 另一种是将多个用户映射到一个用户名,以便他们可以更轻松地共享文件。
请注意,对于user模式安全性,在验证用户凭据之前应用用户名映射。域成员服务器(域或ads)在用户通过域控制器的成功身份验证后应用用户名映射,并且需要映射表中的完全限定项(例如biddle=Domain\foo)。
映射文件逐行解析。每一行左边应该包含一个UNIX用户名,然后是一个“=”,右边是用户名列表。右侧的用户名列表可能包含@group格式的名称,在这种情况下,它们将与该组中的任何UNIX用户名匹配。特殊客户端名称“*”是一个通配符,与任何名称匹配。映射文件的每一行最多可包含1023个字符。
通过获取提供的用户名并将其与“=”符号右侧的每个用户名进行比较,该文件在每一行进行处理。 如果提供的名称与右侧的任何名称匹配,则将其替换为左侧的名称。 然后处理继续下一行。
如果任何行以“#”或“;”开头 然后它被忽略。
如果任何一行以“!”开头然后,如果该行完成了映射,则处理将在该行之后停止。否则,映射将继续处理每一行。使用“!”在文件后面有通配符映射行时最有用。
例如,要从名称admin或administrator映射到UNIX名称root,您可以使用:
root = admin administrator
或者,要将UNIX组system中的任何人映射到UNIX名称sys,请使用:
sys = @system
在用户名映射文件中可以有任意多个映射。
如果您的系统支持 NIS NETGROUP 选项,则在 /etc/group 数据库之前检查 netgroup 数据库是否匹配组。
可以通过在名称周围使用双引号来映射其中包含空格的 Windows 用户名。 例如:
tridge = "Andrew Tridgell"
会将 windows 用户名“Andrew Tridgell”映射到 unix 用户名“tridge”。
下面的示例将 mary 和 fred 映射到 unix 用户 sys,并将其余的映射到 guest。 注意使用“!” 告诉 Samba 如果在该行得到匹配则停止处理:
!sys = mary fred
guest = *
请注意,重新映射适用于所有出现的用户名。 因此,如果您连接到\ \server\fred 并且 fred 被重新映射到 mary,那么您实际上将连接到\ \server\mary 并且需要提供适合 mary 而不是 fred 的密码。 唯一的例外是传递给域控制器的用户名(如果有的话)。
DC 将接收客户端提供的任何用户名,无需修改。
另请注意,不要进行反向映射。 它的主要影响是打印。 已映射的用户可能无法删除打印作业,因为 WfWg 下的 PrintManager 会认为他们不拥有打印作业。
从客户端执行 kerberos 登录时,3.0.8 之前的 Samba 版本仅支持从用户名映射中读取完全限定的用户名(例如:DOMAIN\user)。 但是,在为通过 NTLM[SSP] 认证的用户查找映射条目时,只有登录名将用于匹配。 这有时甚至在同一台服务器上也会导致不一致的行为。
在 3.0.8 及更高版本中遵循以下功能:
执行本地身份验证时,在尝试对连接进行身份验证之前,将用户名映射应用于登录名。
当依赖外部域控制器验证身份验证请求时,smbd 将仅在用户成功通过身份验证后将用户名映射应用于完全限定的用户名(即 DOMAIN\user)。
使用示例如下:
username map = /usr/local/samba/lib/users.map
默认: username map = # 没有用户名映射