实验目的:实现基于文件验证的vsftpd虚拟用户
环境准备;
服务器端:10.0.0.8
客户端: 10.0.0.150
第一步 在服务器端8上设置
yum -y install vsftpd #安装vsftpd
vim /etc/vsftpd/users.txt #建立users.txt
alang #文
123456 #本
alei #内
654321 #容
chmod 600 users.txt #设置权限
文件内容说明:创建文本文件,奇数行为用户名,偶数行为密码,再被编码为hash 格式Berkeley DB**
db_load -T -t hash -f users.txt users.db #将文件设置成数据库文件
file users.db #查看属性
chmod 600 users.db #将设置的db文件也设置权限
创建用户和访问FTP目录
useradd -d /data/ftproot -s /sbin/nologin -r vuser #创建用户
mkdir -pv /data/ftproot/upload #创建访问FTP目录
setfacl -m u:vuser:rwx /data/ftproot/upload #为了后续可以让用户上传数据,更改vuser;
创建pam配置文件
vim /etc/pam.d/vsftpd.db #文件名
auth required pam_userdb.so db=/etc/vsftpd/users
account required pam_userdb.so db=/etc/vsftpd/users #两行文件内容 验证身份和账户的有效性;
指定pam配置文件
vim /etc/vsftpd/vsftpd.conf #文本名称
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.db #启用验证的三行内容 这三行设置后,所有用户都可以进行下载和上传
systemctl restart vsftpd #设置完成后重新启动
第二步:验证
在Ubuntu 上验证是否可以登录系统 用两个账号都可以登录 默认权限是可以下载,但是无法上传;
ftp 10.0.0.8
root@Ubuntu:~# ftp 10.0.0.8 #在客户端用ftp访问
Connected to 10.0.0.8.
220 (vsFTPd 3.0.3)
Name (10.0.0.8:root): lang #输入用户名 lang
331 Please specify the password.
Password: #输入密码后回车
230 Login successful. #显示登录成功
Remote system type is UNIX.
root@Ubuntu:~# ftp 10.0.0.8
Connected to 10.0.0.8.
220 (vsFTPd 3.0.3)
Name (10.0.0.8:root): alei #输入用户名 alei
331 Please specify the password.
Password:
230 Login successful. #输入密码后也可以成功登录
第三步:再次设置
要使用户有上传的权限,要设置匿名写;
创建各个用户配置文件存放的路径
打开:
[root@Centos8 ~]#vim /etc/vsftpd/vsftpd.conf #打开文本写入
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@Centos8 vsftpd]#systemctl restart vsftpd #重新启动服务
目前可以上传文件;
虚拟用户建立独立的配置文件
#指定各个用户配置文件存放的路径
目前该设置,所有用户都可以使用下载和上传权限
区分设置(让每个用户有自己独有的权限)
user_config_dir=/etc/vsftpd/conf.d/
#加上这行让每个用户有自己独有的配置文件
同时去掉这三行
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
这三行是默认谁都有权限 设置如图:
#创建各个用户配置文件存放的路径
[root@Centos8 vsftpd]#mkdir /etc/vsftpd/conf.d/
[root@Centos8 vsftpd]#vim conf.d/lang #单独写一个lang的配置内容
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@Centos8 vsftpd]#systemctl restart vsftpd #重启服务
目前状态只有lang有上传权限 但是必须切换到upload下
目前lang可以上传 alei无法上传
设置不同账号登录看到的文件不一样
创建各用户自已的配置文件
mkdir /data/ftproot1
mkdir /data/ftproot2
[root@Centos8 vsftpd]#touch /data/ftproot1/1.txt
[root@Centos8 vsftpd]#touch /data/ftproot2/2.txt
[root@Centos8 vsftpd]#ls /data/ftproot1/
1.txt
[root@Centos8 vsftpd]#ls /data/ftproot2/
2.txt
接着设置lang
[root@Centos8 vsftpd]#vim conf.d/lang
local_root=/data/ftproot1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
而设置alei
[root@Centos8 vsftpd]#vim conf.d/alei
local_root=/data/ftproot2
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
设置完成后重启服务:systemctl restart vsftpd
测试如图
#如果要增加用户
vim /etc/vsftpd/users.txt
添加后还需要重新设置db
db_load -T -t hash -f user.txt users.db
验证可以登录了:
如果需要其他权限,需要重新设置
至此设置完成
谢谢观赏