前言:
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。
等等 可以用了 我多加了个空格 不用回复了
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