vsftpd配置支持虚拟用户登录

前言:

vsftpd有三种用户模式:匿名用户、本地用户、虚拟用户
匿名用户就是不需要密码就能对ftp进行访问,本地用户是使用/etc/passwd中记录的系统用户作为ftp用户来访问ftp服务,而虚拟用户是专属于vsftpd的用户,他们映射在一个本地用户上,便于控制权限,比本地用户登录更安全。

在主配置文件中开启虚拟用户登录:

编辑vsftpd主配置文件

vim /etc/vsftpd/vsftpd.conf

在文件结尾添加如下三行:

guest_enable=YES开启虚拟用户登录
guest_username=ftp设置ftp(安装vsftpd时默认创建)用户为虚拟用户在操作系统上的映射
user_config_dir=/etc/vsftpd/vu_conf设置用于保存虚拟用户个性配置文件的目录(目录名随便)

创建用户信息数据库

创建并编辑用于保存虚拟用户账户名和密码的文本文件,文件名随意。

vim /etc/vsftpd/vu

在其中添加虚拟用户登录名和 密码,登录名为奇数行号,密码为偶数行号。

test1      #账户
12345678     #密码
test2      #账号
87654321      #密码

生成用户信息数据库文件(其中记录的就是虚拟用户的账户名和密码)

db_load -T -t hash -f /etc/vsftpd/vu /etc/vsftpd/vu.db

配置pam认证

编辑pam中关于ftp用户认证的配置,pam是用于认证用户及授权用户访问服务的一套东东。

vim /etc/pam.d/vsftpd

在文件开头添加两条新内容:

auth sufficient pam_userdb.so db=/etc/vsftpd/vu        #这个文件其实就是我们之前创建的用户数据库文件,不过注意这里一定不要加上db,否则会登录不了的。具体原因是pam在打开数据库文件时会自动在后面增加.db后缀,如果之前已经加了就找不到文件了。
account sufficient pam_userdb.so db=/etc/vsftpd/vu

创建并编辑虚拟用户的个性配置文件

创建用于存放虚拟用户个性配置文件的目录

mkdir /etc/vsftpd/vu_conf

创建并编辑test1用户的个性配置文件(文件名必须和用户名相同)

vim /etc/vsftpd/vu_conf/test1

添加个性配置(若不添加则使用全局配置,对权限的控制请使用匿名用户的控制选项,如anon_mkdir_write=NO,禁止此虚拟用户创建目录):

local_root=/ftp/test1      #设置用户的ftp目录,如果不设置则使用宿主账号的ftp目录

vsftp配置文件中各个选项的中文注释参考此篇文章。

文章归档

创建虚拟用户的FTP家目录

创建test1用户的家目录。

mkdir -p /ftp/test1
chown -R ftp:ftp /ftp

收尾:

在确保SELinux和防火墙均已正确配置后,重启vsftpd服务。

service vsftpd restart

最后使用ftp客户端测试连接,推荐使用FileZilla。

2 thoughts on “vsftpd配置支持虚拟用户登录”

  1. db_load -T -t hash -f /etc/vsftpd/vu /etc/vsftpd/vu.db
    大佬这条指令好像不能用了 我去百度db_load怎么用出现的还是用这些参数
    我输入之后直接说参数错误
    [root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vmuser /etc/vsftpd/vmuser .db
    usage: db_load [-nTV] [-c name=value] [-f file]
    [-h home] [-P password] [-t btree | hash | recno | queue] db_file
    usage: db_load -r lsn | fileid [-h home] [-P password] db_file

Leave a Reply

Your email address will not be published. Required fields are marked *

Captcha Code