我在 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