温馨提示×

ubuntu vsftp怎样集成ldap

小樊
46
2026-10-24 18:54:17
栏目: 智能运维

下面给你一个在 Ubuntu 上让 vsftpd 通过 LDAP 认证的常见可行方案。
vsftpd 本身不直接支持 LDAP,通常需要借助 PAM + nsswitch / sssd / pam_ldap 来实现。


一、整体思路

FTP 客户端
   ↓
vsftpd
   ↓
PAM (pam_ldap / sssd)
   ↓
LDAP 服务器

vsftpd 只负责 FTP 协议
认证交给系统 PAM
LDAP 用户看起来像系统用户


二、安装必要软件

sudo apt update
sudo apt install vsftpd libpam-ldap nslcd

也可用 sssd 替代 nslcd + pam_ldap(推荐生产环境用 sssd)


三、配置 LDAP 客户端(方式一:pam_ldap + nslcd)

1. 配置 nslcd

sudo nano /etc/nslcd.conf

示例:

uid nslcd
gid nslcd

uri ldap://ldap.example.com
base dc=example,dc=com

binddn cn=readonly,dc=example,dc=com
bindpw yourpassword

ssl no
tls_reqcert never
sudo systemctl restart nslcd
sudo systemctl enable nslcd

2. 配置 NSS

sudo nano /etc/nsswitch.conf

确保有:

passwd: files ldap
group:  files ldap

测试:

getent passwd ldapuser

能查到说明 LDAP 用户已可见。


3. 配置 PAM

sudo nano /etc/pam.d/vsftpd

内容示例:

auth    required pam_ldap.so
account required pam_ldap.so

(可保留原有 common-auth 结构)


四、配置 vsftpd

sudo nano /etc/vsftpd.conf

关键配置:

anonymous_enable=NO
local_enable=YES
write_enable=YES

pam_service_name=vsftpd

如果使用虚拟路径:

chroot_local_user=YES
allow_writeable_chroot=YES

五、用户主目录问题(重要)

LDAP 用户通常没有 /home/ldapuser

方案 1:LDAP 中指定 homeDirectory

homeDirectory: /home/ldapuser

方案 2:统一目录

local_root=/srv/ftp

六、方式二(推荐):使用 SSSD

sudo apt install sssd libnss-sss libpam-sss

/etc/sssd/sssd.conf 示例:

[domain/example]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldap://ldap.example.com
ldap_search_base = dc=example,dc=com

[sssd]
services = nss, pam
domains = example
sudo systemctl restart sssd

PAM 会自动使用 SSSD,无需改 vsftpd PAM。


七、调试方法

sudo tail -f /var/log/auth.log
sudo tail -f /var/log/vsftpd.log

常见错误:

  • LDAP 用户查不到 → NSS 配置问题
  • 认证失败 → PAM / 密码 / binddn 问题
  • 登录后 500 → chroot / 权限问题

八、安全建议

✅ 使用 LDAPS / StartTLS
✅ 限制 FTP 用户 Shell(/sbin/nologin)
✅ 考虑用 SFTP 替代 FTP


如果你愿意,可以告诉我:

  • Ubuntu 版本
  • LDAP 类型(OpenLDAP / Active Directory)
  • 是否允许写权限 / chroot

我可以给你一份可直接用的配置文件。

0 踩