实现基于文件验证的vsftpd虚拟用户

实现基于文件验证的vsftpd虚拟用户

一、安装需要的包和包组:
yum -y install libdb-utils
yum -y install vsftpd
二、创建用户数据库文件:
[root@centos8 ~]#vim /etc/vsftpd/vusers.txts
#创建文本文件,奇数行为用户名,偶数行为密码,
ftp1  #创建用户名
123456 #设置密码
ftp2  #创建用户名
123456 #设置密码

[root@centos8 ~]#db_load -T -t hash -f /etc/vsftpd/vusers.txt 
/etc/vsftpd/vusers.db
#编码为hash 格式Berkeley DB database文件,该文件为虚拟用户账号的存储方式
[root@centos8 ~]#chmod 600 /etc/vsftpd/vusers.*
三、创建用户和访问FTP目录:
[root@centos8 ~]#useradd -d /data/ftptoot -s  /sbin/nologin -r vuser
#指给虚拟用户映射到操作系统账号,其中 vuser 指操作系统账号,-r 指这个目录在Cenots默认不创建的,系统账号不会创建家目录。
#为什么用-r:创建的文件夹默认是700的权限,会让用户账号的目录具有了写权限。而对于用户账号ftp不允许直接登录,会登陆失败。
[root@centos8 ~]#mkdir -pv /data/ftproot/upload
[root@centos8 ~]#setfacl -m u:vuser:rwx /data/ftproot/upload
#chmod a=rx /data/ftproot/  #如果自动创建家目录,需要修改权限
四、创建pam配置文件
[root@centos8 ~]#vim /etc/pam.d/vsftpd.db
auth required pam_userdb.so db=/etc/vsftp/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
#用man pam_db查看pam_db具体详情
#其中简述pam_userdb - PAM module to authenticate against a db database #针对数据库进行身份验证
五、指定pam配置文件
[root@centos8 ~]#vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser
#把虚拟用户开启,指定映射的账号
pam_service_name=vsftpd.db #需修改
六、虚拟用户建立独立的配置文件
#指定各个用户配置文件存放的路径
[root@centos8 ~]#vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/conf.d/

#创建各个用户配置文件存放的路径
[root@centos8 ~]#mkdir /etc/vsftpd/conf.d/

#创建各用户自己的配置文件,允许ftp1用户可读写,其它用户只读
[root@centos8 ~]#vim /etc/vsftpd/conf.d/ftp1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_Write_enable=YES
七、验证

开启另一各虚拟机并安装所需安装包来测试

对ftp1可以上传,可以建文件夹

在这里插入图片描述

ftp2由于没有写配置文件,默认不允许上传:
在这里插入图片描述

对ftp2

#创建各用户自己的配置文件,并把登录目录改变至指定的目录
[root@centos8 ~]#vim /etc/vsftpd/conf.d/ftp2
local_root=/data/ftproot2

#针对ftp2用户建立对应的数据目录
[root@centos8 ~]#mkdir /data/ftproot2/

登录目录已修改
在这里插入图片描述

八、提示

还需要开启文件系统访问的权限,不能给FTP根目录写权限,只能级子目录写权限,否则报如下错误

[root@centos6 ~]#ftp 192.168.37.107
Connected to 192.168.37.107 (192.168.37.107).
220 (vsFTPd 3.0.3)
Name (192.168.37.107:root): ftp
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值