Vsftpd 用户认证

Vsftpd 用户认证

我已经设置了一个运行 Centos 7 和 VSFTPD 的虚拟机。

VSFTPD 在连接本地用户时工作得很好。它将用户 chroot 到他之前创建的 home 中/ftp/pub/{用户名}“用户添加-d”。我添加了 TLS 加密,效果也很好(这里禁用了,以便查看哪里出了问题)。我已将 SElinux 上下文设置为/ftp公共内容/ftp/pub(/.*)?public_content_rw_t并在 /ftp/pub 上设置 755 权限

最近,我尝试通过以下步骤将 LDAP 身份验证添加到 VSFTPD 服务器:

authconfig --enableldap --enableldapauth --ldapserver=name_of_my_server --ldapbasedn="dc=item1,dc=item2,dc=item3" --enablemkhomedir --update    

但它只向服务器本身添加了身份验证(我可以使用非本地帐户 ssh 到服务器),而不是向服务(vsftp)添加了身份验证,所以我遇到了:

500 OOPS:无法更改目录:/home/default/path

我从这个错误中了解到,它试图登录默认主目录(显然不存在),而不创建新的主目录。我想要做的是,当非本地用户尝试在我的服务器上进行 FTP 时,它会在/ftp/pub/{用户名}并将他放入其中。

这是pam.d/login:

#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

pam.d/vsftpd:

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

vsftpd.conf:

anonymous_enable=NO
#Permet aux utilisateurs locaux de RW
local_enable=YES
write_enable=YES
local_umask=022
pasv_enable=YES
pasv_max_port=1026
pasv_min_port=1025
dirmessage_enable=YES
connect_from_port_20=YES
ascii_download_enable=YES
ascii_upload_enable=YES
ftpd_banner=Welcome to blah FTP service.

#Partie chroot
chroot_local_user=YES
allow_writeable_chroot=YES
local_root=/ftp/pub/$USER
user_sub_token=$USER
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list

#logs
xferlog_enable=YES
xferlog_std_format=NO
log_ftp_protocol=YES

listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

# Ajouts
use_localtime=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
require_ssl_reuse=NO
ssl_ciphers=HIGH
ssl_enable=NO
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

我对 VSFTPD 的 ldap auth 非常困惑,在 serverfault 上的其他帖子中找不到我应该做什么。如果有人能帮助我或推荐文档,我将不胜感激。

编辑:SSH 登录会在默认路径 (/home) 中为用户成功创建一个主目录,而 FTP 登录不会在 /home 中创建主目录,也不会在/ftp/pub我的目标是为 FTP 登录用户创建一个主页/ftp/pub

编辑2:根据 mxttie 的建议,我可以使用 pam_exec,但这更像是“绕开”问题,而不是真正解决问题。我必须在“/home”中创建一个文件夹,然后在“/ftp/pub”中为每个要连接的用户创建一个文件夹,以解决两个连续的问题500 错误错误

答案1

使用pam_exec模块调用执行必要命令的脚本(即在/ftp/pub(适用于非本地用户)

相关内容