前提准备
注释掉,有可能引起虚拟用户登陆失败。
1、添加虚拟用户口令文件
vi /etc/vsftpd/vuser.txt
lww1 # 用户名
123 # 密码
lww2 # 用户名
123 # 密码
注:因为这些用户密码并不是在系统里创建的,所以不能用这些用户名进入系统,只能进入ftp服务器
2、生成虚拟用户口令认证文件
[root@localhost ~]# yum -y install db4-utils
# 如果没有安装口令认证命令,需要安装
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
# 把文本文档转变为认证的数据库,生成vuser.db数据库
3、编辑vsftpd的PAM认证文件
[root@localhost vsftpd]# vi /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
# 注释掉其它行,加入此两行即可
# 注释掉其它行,可以禁止本地用户登陆,因为本地用户登陆时的验证依然依赖这个文件
注:文件本身的内容是验证本地用户登陆的信息,要注释掉
********************************************************************************************************************************************************
set nu (显示行号)
2,8/^/#/g (行首替换为 #)
********************************************************************************************************************************************************
4、建立本地映射用户并设置宿主目录权限
[root@localhost vsftpd]# useradd -d /home/vsftproot -s /sbin/nologin vuser
# 此用户不需要登陆,只是映射用户。/home/vsftproot 是指定的家目录。
# 用户名必须和下一步配置文件中一致
[root@localhost vsftpd]# chmod 755 /home/vsftproot/
# 更改目录权限,使其可以上传。
注:不管我们是用 lww1 还是 lww2 登陆,在Linux看来都是用vuser登陆。另外,此用户不需要设密码。
5、修改配置文件
vi /etc/vsftpd/vsftpd.conf
guest_enable=YES
# 开启虚拟用户
guest_username=vuser
# FTP虚拟用户对应的系统用户
pam_service_name=vsftpd
# PAM认证文件(默认存在)
6、重启vsftpd服务,并测试
service vsftpd restart
(1)此时虚拟用户可以登陆,查看,下载,不能上传。
(2)默认上传文件的位置是宿主目录的家目录。
local_root=/tmp/lww_root/
#因为我们一开始在设置本地用户登陆时设置的所有登陆用户都默认访问此目录,所以现在注释掉。
(3)权限使用的是匿名用户权限进行管理。
7、调整虚拟用户权限