vsftpd提供三种身份登录:实体用户、虚拟用户和匿名用户。
实体用户就是linux系统中已经存在的用户,可以直接登录上linux系统的。既然已经可以登录系统,可以直接用scp走ssh协议传输文件,没必要再通过ftp来获取文件了。
匿名用户就是开放了ftp,只要客户端能通过防火墙,就能访问到ftp服务器上的文件数据。这是极其危险的,所以应该避免。
我们关注的就是虚拟用户的配置和管理,整个过程如下:
创建新文件login.txt,文件内容如下:
kisinfoc 这一行是账号名
123456 这一行是明文存储的密码
文件格式:一行账号名,下一行是对应的密码
执行如下指令,将账号信息转换为数据库文件。
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/account.db
在/etc/pam.d/目录下,新建一个文件ftp,写入内容如下:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/account
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/account
注意:最后指向的数据库文件,没有带后缀“db”
在/etc/vsftpd目录下,新建一个目录VirtualUser,并在VirtualUser目录下新建一个跟虚拟账号名相同名字的文件,这个是虚拟账号的配置信息。新建一个文件,文件名为kisinfoc,写入内容如下:
local_root=/data/logs 这个指登录后,ftp的根目录
anon_upload_enable=NO 这些是用户的操作权限配置,可以按需要修改
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
最后,修改主配置文件/etc/vsftpd/vsftpd.conf,改为如下内容
执行指令service vsftpd restart,重启vsftpd服务,这些配置就已经生效了。
如果按照上面步骤配置,最后ftp还是登录不上,就是selinux阻止了。
将selinux改成非强制性的,执行指令:
setenforce 0