Centos 上的 VSFTPD 设置新虚拟用户无法连接

Centos 上的 VSFTPD 设置新虚拟用户无法连接

我在 centos 上配置了一个 vsftpd 服务器。logins.txt 中列出的旧用户可以通过 wb 浏览器登录。问题是当我创建新用户时我无法登录530 错误登录

创建用户登录的步骤:将用户名和密码添加到logins.txt,在用户目录中我创建用户配置文件:

anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_upload_enable=NO
dirlist_enable=YES
download_enable=YES
local_root=/var/ftpdata/user
write_enable=YES

并在 /var/ftpdata/user 中创建主目录

此后我执行命令将新用户加载到数据库

db42_load -T -t hash -f logins.txt vsftpd.login.db

并重启服务

/etc/init.d/vsftpd restart

因此,主要问题是老用户可以登录,但新创建的用户无法登录

答案1

您在 logins.txt 中添加了用户。但服务器使用 vsftpd.login.db 进行密码检查。我认为,您需要在添加新用户后重新散列密码文件。

您可以创建一个自动添加用户的脚本(convert.sh):

#!/bin/bash

db4.8_load -T -t hash -f logins.txt logins.db
chmod 600 logins.db

创建.sh:

#!/bin/bash

USER=$1
PASS=$2

echo "$USER"+"$PASS"

#adding user and updating db
echo "$USER" >> logins.txt
echo "$PASS" >> logins.txt
db4.8_load -T -t hash -f logins.txt logins.db
chmod 600 logins.db

#creating homedir
mkdir /home/ftp/$USER
chown virtual:virtual /home/ftp/$USER
chmod 555 /home/ftp/$USER

#creating config
cd /etc/vsftpd/users_config/
touch "$USER"
echo "local_root=/home/ftp/$USER" >> "$USER"
echo "write_enable=YES" >> "$USER"
echo "anon_mkdir_write_enable=YES" >> "$USER"
echo "anon_other_write_enable=YES" >> "$USER"
echo "anon_upload_enable=YES" >> "$USER"
echo "chroot_local_user=YES" >> "$USER"

设置权限和模式:

$ chmod 700 convert.sh 
$ chmod 700 create.sh

相关内容