Linux SMB 服务器 + PAM:如何授予 LDAP 用户权限?

Linux SMB 服务器 + PAM:如何授予 LDAP 用户权限?

我有一个以默认方式(即它来自的方式apt-get)设置的 Linux Mint SMB 服务器,因此我有这样的设置:

passdb backend = tdbsam

我已使用 PAM 正确配置了 LDAP(并且用户通过 ssh 登录可以正常工作)。

我尝试在共享设置中执行此操作:

valid users = family

familyLDAP 服务器上的组在哪里。

但是,当我尝试以 ldap 用户身份连接到服务器时,它不允许我连接。如果我以本地用户身份连接,它就可以正常工作。

此外,Ubuntu“共享文件夹”控制面板不会在授予各种共享访问权限的人员列表中显示任何网络用户。

所以:这为什么不起作用?

补充:

以下是我认为与连接计算机名称标记的[非常]长的日志文件的相关部分:

从工作站 [DEFIANT] 映射用户 [SEC1][christopher]

尝试为 christopher (christopher) 创建用户信息

为 christopher 的 user_info 结构制作字符串

为 christopher 的 user_info 结构制作 blob

为 christopher (christopher) 创建了一个 user_info

check_ntlm_password:使用新密码界面检查未映射用户 [SEC1][christopher]@[DEFIANT] 的密码

check_ntlm_password:映射用户为:[SEC1][christopher]@[DEFIANT]

check_ntlm_password:随机创建的 auth_context 挑战

挑战是:

[0000]F9 89 7B 47 67 0B 29 49 ..{Gg.)I

检查 [christopher] 的授权

check_ntlm_password:客人无话可说

检查 [christopher] 的授权

is_myname("SEC1") 返回 1

推送_sec_ctx(0,0):sec_ctx_stack_ndx = 1

推送_conn_ctx(0):conn_ctx_stack_ndx = 0

设置 sec ctx (0, 0) - sec_ctx_stack_ndx = 1

安全令牌:(NULL)

用户 0 的 UNIX 令牌主要组为 0,包含 0 个补充组

pdb_getsampwnam (TDB):获取数据库时出错。键:USER_christopher

pop_sec_ctx (0, 0) - sec_ctx_stack_ndx = 0

check_sam_security:在 passdb 中找不到用户“christopher”。

check_ntlm_password:用户 [christopher] 的 sam 身份验证失败,错误为 NT_STATUS_NO_SUCH_USER

check_ntlm_password:用户 [christopher] 的身份验证 -> [christopher] 失败,错误为 NT_STATUS_NO_SUCH_USER

检查 SEC1\christopher 的 NTLMSSP 密码失败:NT_STATUS_NO_SUCH_USER

没有此用户 christopher [SEC1] - 使用来宾帐户

请注意,“SEC1”是服务器的名称,“DEFIANT”是客户端的名称。我还尝试使用用户名“\”进行连接;它正确识别了域,但仍然没有任何变化。

答案1

PAM 根据 LDAP 数据库对用户进行身份验证,而 Samba 根据其tdbsam后端对用户进行身份验证。简单的解决方案是使用 或 添加它们smbpasswd -a <username>pdbedit -a -u <username>复杂的解决方案是使用 LDAP 作为 Samba 的passdb backend

编辑:请注意,如果您将 Samba 配置为使用 LDAP passdb backend,它将只验证 LDAP 用户,而不是本地用户。

相关内容