linux中的ftp服务的搭建及配置
1 ftp概述2 ftp服务的搭建2.1 ftp的客户端2.2 FTP的服务端2.2.1 服务端软件vsftpd的下载 2.2.2 vsftp的环境配置2.2.3 vsftpd的基本信息 3 vsftp的配置参数3.1 用户的登陆3.2 设定用户的家目录3.3 匿名用户上传文件3.4 匿名用户下载文件3.5 匿名用户建立目录3.6 匿名用户的其他权限 4 用户登录控制4.1 用户登录黑名单4.2 用户登录白名单4.3 用户家目录的锁定4 虚拟用户的管理4.1 虚拟用户的建立4.2 虚拟用户家目录的独立设定4.3 虚拟账号的独立配置文件1 ftp概述
文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,是应用层的协议, 使用 TCP进行可靠的 传输。客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
ftp
FTP 是基于客户———服务器(C/S)模型而设计的,在客户端与 FTP 服务器之间建立两个连接。
FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机,而是通过FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等, 即使双方计算机可能配有不同的操作系统和文件存储方式。
2 ftp服务的搭建
2.1 ftp的客户端
下载FTP的客户端软件:dnf install lftp.x86_64
2.2 FTP的服务端
vsftpd (very secure FTP daemon)最大的特点是其安全性,vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。
2.2.1 服务端软件vsftpd的下载
下载vslftp:dnf install vsftpd.x86_64 -y
2.2.2 vsftp的环境配置
(1)关闭selinux
查看selinux的状态:getenforce
编辑配置文件更改selinux的状态:vim /etc/sysconfig/selinux
更改selinux的状态后必须重启系统:reboot
确认selinux关闭
(2)开启vsftpd服务:systemctl start vsftpd.service
(3)打开防火墙,添加ftp服务
打开防火墙:systemctl start firewalld
列出允许的服务:firewall-cmd --list-all
永久启用ftp服务:firewall-cmd --permanent --add-service=ftp
在不改变状态的条件下重新加载防火墙:firewall-cmd --reload
(4)验证ftp服务是否成功开启:ftp://172.25.254.10
2.2.3 vsftpd的基本信息
服务名称:vsftpd.service
主配置目录:/etc/vsftpd/
主配置文件:/etc/vsftpd/vsftpd.conf
默认发布目录:/var/ftp
报错信息3 vsftp的配置参数
vsftp的主配置文件:/etc/vsftpd/vsftpd.conf
每次修改配置文件后必须重启vsftpd服务,否则更改的配置参数不生效
3.1 用户的登陆
(1) 是否允许匿名用户登陆:anonymous_enable
不允许匿名用户登陆:anonymous_enable=NO
,匿名用户不能登陆 允许匿名用户访问:anonymous_enable=YES
,匿名用户登陆后可以访问其中的内容
(2)是否允许本地用户登录:local_enable
不允许本地用户登陆:local_enable=NO
允许本地用户登陆:local_enable=YES
3.2 设定用户的家目录
(1)设定本地用户家目录:local_root=/var/ftp
(2)设定匿名用户的家目录
匿名用户默认的家目录:/var/ftp
设定匿名用户的家目录:anon_root=/westdir
3.3 匿名用户上传文件
(1)是否允许匿名用户上传文件:anon_upload_enable
修改ftp默认发布目录的所有组:chgrp ftp /var/ftp/pub
修改ftp默认发布目录的权限:chmod 777 /var/ftp/pub
不允许匿名用户上传文件:anon_upload_enable=YES
允许匿名用户上传文件:anon_upload_enable=YES
(2)上传文件的umask
当设定chown_username之后上传文件权限将不受这个参数的影响 设定匿名用户上传文件的umask值:anon_umask=022
(3)匿名用户上传文件的权限
chown_uploads=YES
:所有匿名上传的文件的所属用户将会被更改成chown_username匿名上传文件所属用户名:chown_username=linux
匿名上传文件的权限:chown_upload_mode=0644
3.4 匿名用户下载文件
匿名登用户能否下载可读的文件的参数:anon_world_readable_only
不允许匿名登用户下载可读的文件anon_world_readable_only=YES
允许匿名用户能下载可读的文件anon_world_readable_only=NO
3.5 匿名用户建立目录
不允许匿名用户建立目录:anon_mkdir_write_enable=NO
允许匿名用户建立目录:anon_mkdir_write_enable=YES
3.6 匿名用户的其他权限
(1)是否允许匿名用户具有建立目录,上传之外的权限,如删除:anon_other_write_enable
不允许匿名用户具有建立目录,上传之外的权限:anon_other_write_enable=NO
允许匿名用户具有建立目录,上传之外的权限:anon_other_write_enable=YES
(2)可接受的最大client数目:max_clients=1
第二台主机登陆该服务器时,提示超过最大的连接数,无法登录
(3)匿名用户的传输比率(b/s):anon_max_rate=10
4 用户登录控制
4.1 用户登录黑名单
(1)默认黑名单:/etc/vsftpd/user_list
将linux加入到登陆黑名单:echo linux > /etc/vsftpd/user_list
(2)永久黑名单:/etc/vsftpd/ftpusers
将westos加入到登陆黑名单:echo westos >/etc/vsftpd/ftpusers
4.2 用户登录白名单
设定/etc/vsftpd/user_list
为用户登录白名单,不在此名单中的用户不能登陆在配置文件中修改:userlist_deny=NO
将westos加入到登陆白名单:echo westos >/etc/vsftpd/user_list
4.3 用户家目录的锁定
(1)将本地用户锁定在其家目录中:chroot_local_user=YES
(2)锁定用户到自己家目录中的白名单
在vsftpd主配置文件中修改:/etc/vsftpd/vsftpd.conf
禁止本地用户访问根目录:chroot_local_user=YES
开启本地用户访问根目录的用户列表:chroot_list_enable=YES
,只有列在chroot_list_file之中的使用者才能访问根目录指定名单中的用户可以访问根目录:chroot_list_file=/etc/vsftpd/chroot_list
重启vsftpd服务将westos用户加入名单:echo westos > /etc/vsftpd/chroot_list
(3)锁定用户到自己家目录中的黑名单
开启本地用户访问根目录:chroot_local_user=NO
开启限制本地用户访问根目录的用户列表:chroot_list_enable=YES
指定名单中的用户可以访问根目录:chroot_list_file=/etc/vsftpd/chroot_list
,在chroot_list_file之中的使用者不能访问根目录 重启vsftpd服务后,查看用户访问根目录黑名单
4 虚拟用户的管理
4.1 虚拟用户的建立
(1)创建认证文件:vim /etc/vsftpd/ftp_auth_file
(2)加密认证文件
db_load -T -t hash -f ftp_auth_file ftp_auth_file.db
(3)创建虚拟用户认证文件:vim /etc/pam.d/user
(4)编辑配置文件:/etc/vsftpd/vsftpd.conf
启用guest后,所有非匿名用户将映射到guest_username进行访问,包括本地系统用户也不能使用
(5)重启vsftpd服务:systemctl restart vsftpd.service
(6)虚拟用户登陆检测
user1和user2不是系统中真实存在的用户 正确的输入虚拟用户的账号密码可以正常登陆
4.2 虚拟用户家目录的独立设定
(1)实验环境
建立虚拟用户名对应的子目录:mkdir -p /ftpuserdir/user{1..2}
为了便于观察实验结果在在虚拟用户名对应的目录下建立子文件:
touch /ftpuserdir/user1/userfile1 touch /ftpuserdir/user1/userfile1
(2)编辑vsftpd的配置文件:vim /etc/vsftpd/vsftpd.conf
(3)重启vsftpd服务:systemctl restart vsftpd.service
4.3 虚拟账号的独立配置文件
(1)新建目录存放虚拟用户对应的配置文件:/etc/vsftpd/virtuserconf/
(2)新建user1的配置文件:touch /etc/vsftpd/virtuserconf/user1
文件名与虚拟用户的名称一致,作为虚拟用户的配置文件,其优先级高于vsftp的主配置文件
(3)虚拟用户user1开放文件上传功能
echo anon_upload_enable=YES > /etc/vsftpd/virtuserconf/user1
(4) 关闭/etc/vsftpd/vsftpd.conf
配置文件中虚拟用户上传文件的功能
(5)测试
使用虚拟用户user1和user2登录系统,验证实验效果