我遇到了一个非常奇怪的问题,即 Samba 和用户名映射。映射文件如下:
username map = /etc/samba/users.map
/etc/samba/users.map的内容:
master = johndoe user2 user3
regular = johndoe user5 user6
restricted = johndoe user8 user9
问题是 Samba 始终映射johndoe
到文件中列出的最后一个本地用户/etc/samba/users.map
。在上面的示例中,johndoe
将始终映射到restricted
,因此如果我有一个仅允许的共享master
和另一个仅允许的共享restricted
,我将无法同时访问这两个共享,尽管johndoe
在两个条目中都列出了。
这是正常行为吗?
答案1
正确。这是设计使然。来自文档:
映射文件是逐行解析的。每行左侧应包含一个 UNIX 用户名,然后是“=”,后面是右侧的用户名列表。右侧的用户名列表可能包含 @group 形式的名称,在这种情况下,它们将匹配该组中的任何 UNIX 用户名。特殊客户端名称“*”是通配符,可匹配任何名称。映射文件的每一行最多可包含 1023 个字符。
该文件的每一行都会进行处理,方法是获取提供的用户名并将其与“=”符号右侧的每个用户名进行比较。如果提供的名称与右侧的任何名称匹配,则将其替换为左侧的名称。然后继续处理下一行。
因此,如果同一个用户帐户出现在多行中,则不会将它们包含在每个地图中,而是包含在最后定义的地图中。
如果目标是拥有“超级用户”,那么您可能需要查看特定股票列表或映射帐户群组而不是用户。