<1>.什么是FTP 服务器?
FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application).基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件.
在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)
<2>.什么是Vsftpd?
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。
<3>.实验环境-客户端(request请求-desktop) - (response响应-server)服务端
安装vsftpd
yum install vsftpd -y
systemctl start vsftpd ##开启vsftpd服务
systemctl stop firewalld ##关闭火墙
systemctl enable vsftpd ##火墙设置enable状态
lftp ip ##能登陆并且显示,表示安装成功
vsftpd文件信息
/var/ftp ##默认发布目录
/etc/vsftpd ##配置目录
客户端访问时, 用户身份可以分为:
1). 匿名用户:没有指定用户身份, ftp身份实现从服务器上传和下载文件;
2). 本地用户: -u指定用户身份,用户是服务器端的用户;
3). 虚拟用户: -u指定用户身份,但是服务器端并不存在该用户(id username)
没有指定用户身份
1.匿名用户登陆限制
vim /etc/vsftpd/vsftpd.conf ##编辑vsftp配置文件
anonymous_enable=YES/NO ##修改为NO
systemctl restart vsftpd ##重启服务
desktop测试 lftp不可查看
2.匿名用户上传upload
server-vim /etc/vsftpd/vsftpd.conf ##编辑vsftp配置文件
anonymous_enable=YES ##取消匿名用户登陆限制
anon_upload_enable=YES
systemctl restart vsftpd ##重启服务
chgrp ftp /var/ftp/pub 或 chmod 775 /var/ftp/pub
setenforce 0 ##关闭selinux
desktop-测试-put文件
3.匿名用户家目录修改 anon_root=/direcotry
匿名用户上传文件默认权限修改 anon_umask=022
匿名用户建立目录 anon_mkdir_write_enable=YES/NO
匿名用户下载 anon_world_readable_only=YES/NO(no表示匿名用户可以下载)
匿名用户删除 anon_other_write_enable=YES/NO
匿名用户使用的用户身份修改
chown_uploads=YES
chown_usernamer=student
chown_uploads_mode=0644
(类似匿名用户上传文件默认权限修改 anon_umask=022)
server先生成文件 dd if=/dev/zero of=share.txt bs=1M count=100
最大上传速率anon_max_rate=102400
最大链接数max_clients=2
4.本地用户设定
local_enable=YES/NO 本地用户登陆限制
write_enable=YES/NO 本地用户写权限限制
本地用户家目录修改local_root=/directory
本地用户上传文件权限local_umask=XXX
5.限制本地用户浏览根目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
允许切换到根目录的用户黑名单建立
用户默认是可以切换到根目录的
chroot_local_user=NO
专门设置的列表文件是不允许切换到根目录的
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
允许切换到根目录的用户白名单建立
用户默认是可以切换到根目录的
chroot_local_user=YES
专门设置的列表文件是允许切换到根目录的
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
6.限制本地用户登录
环境:建立三个用户useradd 快速修改密码westos
用户黑名单(默认root在黑名的中) vim /etc/vsftpd/ftpusers
临时黑名单 vim /etc/vsftpd/user_list
用户白名单设定
userlist_deny=NO
vim /etc/vsftpd/user_list
systemctl restart vsftpd
7.虚拟用户设定
<1>准备工作:创建虚拟帐号身份的文件
vim /etc/vsftpd/loginusers
ftpuser1
123
ftpuser2
123
ftpuser3
123
<2>对用户帐号密码加密
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
chmod 600 /etc/vsftpd/loginusers ##安全
<3>编辑帐号和密码处理的库文件
vim /etc/pam.d/ckvsftpd
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
<4>配置vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd 虚拟用户信息认证文件名称
guest_enable=YES 虚拟用户开启
<5>虚拟帐号身份指定
guest_username=ftpuser
chmod u-w /home/ftpuser
<6>测试
8.虚拟用户家目录独立设定
mkdir /ftp
chgrp ftpuser /ftp
chmod g+s /ftp 创建的所有文件属于ftp用户组
mkdir /ftp/ftpuser{1…3}
touch /ftp/ftpuser1/hello1
touch /ftp/ftpuser2/hello2
touch /ftp/ftpuser3/hello3
vim /etc/vsftpd/vsftpd.conf
local_root=/ftp/
U
S
E
R
本
地
用
户
访
问
的
家
目
录
在
哪
USER 本地用户访问的家目录在哪
USER本地用户访问的家目录在哪USER变量表示
user_sub_token=$USER 变量获取
测试
9.虚拟帐号独立配置
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir /etc/vsftpd/conf.d
在此文件中设定配置文件中的所有参数,此文件的优先级高
让不同的虚拟用户拥有不同的权限
vim /etc/vsftpd/conf.d/ftpuser1 ##限制下载速度
anon_max_rate=1024
vim /etc/vsftpd/conf.d/ftpuser2 ##上传文件
write_enable=YES
anon_upload_enable=YES
创造测试环境-/ftp/ftpuser1下创建
dd if=/dev/zero of=hello1 bs=1M count=100
/ftp/ftpuser2下创建
dd if=/dev/zero of=hello2 bs=1M count=100
mkdir upload
chown ftpuser /ftp/ftpuser2/upload/
进行测试