在 CentOS 上搭建 FTPServer(vsftpd + SSL/TLS)并集成 LDAP 认证,常见做法是:
下面给你一套可落地的 CentOS 实操方案(CentOS 7/8 通用思路)。
客户端
|
FTPS (vsftpd)
|
PAM
|
nslcd / sssd
|
LDAP Server
vsftpd 只认“系统用户”,LDAP 用户通过 nsswitch + PAM 变成系统可认证用户。
# CentOS 7
yum install -y vsftpd pam_ldap nss-pam-ldapd openssl
# CentOS 8
dnf install -y vsftpd pam_ldap nss-pam-ldapd openssl
/etc/nslcd.confvi /etc/nslcd.conf
示例:
uid nslcd
gid ldap
uri ldap://ldap.example.com
base dc=example,dc=com
binddn cn=admin,dc=example,dc=com
bindpw your_ldap_password
ssl no
tls_reqcert never
启动服务:
systemctl enable --now nslcd
编辑 /etc/nsswitch.conf:
passwd: files ldap
group: files ldap
shadow: files ldap
测试:
getent passwd ldapuser1
✅ 能看到用户信息说明 LDAP 已接入系统
编辑 vsftpd 的 PAM 文件:
vi /etc/pam.d/vsftpd
内容示例(保留原内容,追加 LDAP):
auth required pam_ldap.so
account required pam_ldap.so
⚠️ 如果只允许 LDAP 登录,可注释掉 pam_unix.so
vi /etc/vsftpd/vsftpd.conf
关键配置:
anonymous_enable=NO
local_enable=YES
write_enable=YES
# 允许 LDAP 用户登录
pam_service_name=vsftpd
# 限制用户主目录
chroot_local_user=YES
allow_writeable_chroot=YES
# 日志
xferlog_enable=YES
openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.key \
-out /etc/vsftpd/vsftpd.crt
在 vsftpd.conf 中添加:
ssl_enable=YES
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES
rsa_cert_file=/etc/vsftpd/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/vsftpd.key
重启服务:
systemctl restart vsftpd
LDAP 用户通常 没有本地 home 目录
session required pam_mkhomedir.so skel=/etc/skel umask=0077
加到 /etc/pam.d/vsftpd
local_root=/data/ftp
journalctl -xe
tail -f /var/log/secure
getent passwd ldapuser
chroot 权限如果你愿意,Pure-FTPd 对 LDAP 支持更原生:
yum install pure-ftpd
pure-ftpd -l ldap:/etc/pure-ftpd/ldap.conf
如果你告诉我:
我可以给你 精确到行的配置文件。