AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1512282
Accepted
wouter205
wouter205
Asked: 2024-04-30 15:18:08 +0800 CST2024-04-30 15:18:08 +0800 CST 2024-04-30 15:18:08 +0800 CST

哎呀,使用MySQL作为用户后端的VSFTP服务在尝试读取用户列表文件`/etc/vsftpd.user_list`时出错了。这可能是由于文件不存在、权限问题或者配置错误导致的。你需要检查一下这个文件是否存在,以及VSFTP服务是否有权限访问它。同时,也要确保你的VSFTP配置文件中关于MySQL后端的设置是正确的。如果问题依旧,可能需要进一步检查MySQL数据库中的用户信息是否完整,以及VSFTP服务是否能够正确地与MySQL数据库进行交互。

  • 772

我想在Ubuntu 22.04.4上搭建一个使用MySQL作为后端存储用户的VSFTP服务器。

我参考了这个指南来设置(它是针对CentOS的,但除了pam_mysql.so部分外,也适用于Ubuntu)。

以下是我的配置:

  • /etc/vsftpd.conf
匿名访问禁用
被动模式地址解析启用
被动模式地址设置为ftp.company.com
被动模式端口范围40000到41000

本地用户启用
写入权限启用
本地用户默认权限掩码022
启用目录消息
启用传输日志
允许从端口20连接

以vsftpd用户身份运行
将本地用户限制在chroot环境中
启用监听
PAM服务名称设置为vsftpd
启用用户列表
启用TCP包装器
允许访客访问
访客用户名设置为vsftpd
本地用户的根目录为/home/vsftpd/$USER
用户替换标记为$USER
使用本地权限的虚拟用户
允许可写的chroot环境
启用被动模式
  • /etc/pam.d/vsftpd
#%PAM-1.0
会话 可选 pam_keyinit.so 强制撤销
认证 必须 pam_mysql.so 用户=vsftpd 密码=mypassword 主机=localhost 数据库=vsftpd 表=accounts 用户列=username 密码列=pass 加密=3
账户 必须 pam_mysql.so 用户=vsftpd 密码=mypassword 主机=localhost 数据库=vsftpd 表=accounts 用户列=username 密码列=pass 加密=3
  • MySQL账户表
mysql> select * from accounts;
+----+-----------------------------------+----------------------------------+
| id | username                          | pass                             |
+----+-----------------------------------+----------------------------------+
|  1 | [email protected]               | [密码哈希]                   |
+----+-----------------------------------+----------------------------------+
1 行数据 (0.00 秒)

在VirtualBox上的本地测试服务器上一切正常,但当我在生产服务器上使用相同的配置时,使用WinSCP连接FTP服务器时出现了这个错误:

OOPS: 无法读取用户列表文件:/etc/vsftpd.user_list

显然vsftpd没有使用MySQL连接来检索用户,而是在寻找一个缺失的用户列表文件。

到目前为止,我已经检查了以下内容:

  • 确认安装了libpam-mysql和mysql-client
  • 确保可以使用vsftpd的凭证连接到MySQL数据库
  • 禁用了iptables,以免干扰数据库连接

但到目前为止,我还没有解决这个问题。令人沮丧的是,它在我的VirtualBox实例中工作正常,但我看不出这个实例和生产实例之间有任何区别。

请问我该如何排查vsftpd和MySQL之间的连接问题?

我的生产环境:

  • Ubuntu 22.04.4
  • MySQL 8.0.36
  • vsftpd 3.0.5
  • iptables v1.8.7
mysql
  • 1 1 个回答
  • 81 Views

1 个回答

  • Voted
  1. Best Answer
    wouter205
    2024-05-21T22:43:08+08:002024-05-21T22:43:08+08:00

    经过进一步的调查,我在/var/log/auth.log中发现了以下错误:

    pam_mysql - MySQL错误(用户'vsftpd'@'localhost'被拒绝访问(使用密码:是))
    

    我认为vsftpd无法连接到MySQL数据库。我通过创建一个新用户:vsftpd_user 和新数据库:vsftpd_db,然后重新创建vsftpd的授权和表,解决了这个问题。我这样操作后,vsftpd连接到MySQL没有再出现问题,所以可能之前使用相同的名称作为数据库和用户造成了一些混淆。

    • 0

相关问题

  • 上网本上的 MySQL 数据建模

  • 从终端备份mysql

  • 为什么 /etc/init.d/mysql 会运行错误的暴发户工作?

  • 将引号添加到文件中的字符串

  • 如何将 MySQL 数据文件移动到不同的分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve