VsFTPd - LDAP - PAM

Tot*_*tor 5 openldap ldap ftp pam vsftpd

我正在尝试配置 VsFTPd 服务器以再次验证 LDAP 服务器。这可能很容易,但是由于这是我第一次同时使用 LDAP 和 PAM,所以我遇到了一些困难。VsFTPd 在 Ubuntu Server 11.04 上运行,LDAP 是 10.10 Ubuntu Server 上的 OpenLDAP。我在第一个上禁用了 AppArmor。VsFTPd 无法连接到 LDAP 服务器,在我的系统日志中我有:

vsftpd: pam_ldap: ldap_simple_bind Can't contact LDAP server

LDAP 服务器没问题,因为我可以执行ldapsearch.

这是我的/etc/pam.d/vsftpd文件:

auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
@include common-account
@include common-session
@include common-auth
auth required pam_ldap.so
account required pam_ldap.so
session required pam_ldap.so
password required pam_ldap.so
Run Code Online (Sandbox Code Playgroud)

这是我的/etc/ldap.conf文件:

base dc=example,dc=com
uri ldapi:///ldap.example.com
ldap_version 3
rootbinddn cn=admin,dc=example,dc=com
pam_password md5
nss_initgroups_ignoreusers a_bunch_of_system_users
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?谢谢你。

编辑:/etc/pam.d/vsftpd文件的新版本:

auth    required    pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

account required    pam_unix.so
account sufficient  pam_ldap.so

session required    pam_limits.so
session required    pam_unix.so
session optimal     pam_ldap.so

auth    required    pam_env.so
auth    sufficient  pam_unix.so nullok_secure
auth    sufficient  pam_ldap.so use_first_pass

auth    required    pam_shells.so
Run Code Online (Sandbox Code Playgroud)

qua*_*nta 2

根据man ldap.conf

URI <ldap[si]://[name[:port]] ...>
Run Code Online (Sandbox Code Playgroud)

URI 方案可以是ldapldapsldapi中的任何一个,它们分别指的是 LDAP over TCP、LDAP over SSL (TLS) 和 LDAP over IPC(UNIX 域套接字)。

因此,更改uri ldapi:///ldap.example.comuri ldap:///ldap.example.com并重试。