Linux服务.NO3——ftp服务器

3.FTP服务器

3.1.ftp梗概

ftp是文件传输协议,可以在网络中传输文档、图像、音频、视频和应用程序等多类型的文件。
ftp文件传输需要有两种连接,一种为控制文件传输的命令,称为控制连接,一种为实现文件传输,称为数据连接。
控制连接:客户端向服务器21端口,发起连接请求,服务器接收请求,并完成连接。
数据连接:即完成控制连接后的实际数据连接,是数据传输的过程连接。

3.2.工作方式

主动模式:FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。ftp服务器的21端口用于用户验证,20端口用于数据传输。
被动模式: 在建立控制通道的时候和主动模式类似,但建立连接后发送Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
大多数防火墙不支持打开ftp的高位端口,所以一要经过防火墙的服务器一般不支持PASV模式

3.3.传输模式

在ftp中将文件分为文本文件和数据文件,文本文件是指如html,日志等这样纯文本文字的文件,而数据文件是指向图像、压缩文件、可执行文件等这样文件意义高于文本的带数据的文件。
ASCII传输模式:如果是对于文本文件,如果传输双方不全是Linux,文件传输的时候ftp会自动地调整文件内容,以便于将文件解释给客户机存储文本文件的格式。
Binary传输模式:保存文件的位序,保证原始和拷贝的是逐位一一对应,binary命令会告诉ftp不要对文件做任何操作。
如果使用ASC模式传输数据文件,ftp任然会进行一定的转译,这样就使得传输变慢,同时毁坏文件数据。
原则上:除了纯文本文件在不同系统的C/Sftp上进行传输会使用到ASCII模式(也可以使用binary模式),其他任何时候都要使用binary模式,即默认模式。

3.4.ftp用户

1.匿名用户:该类用户在服务器中没有指定账户,可以访问部分资源,登录名为anonymous或ftp.该类用户的登录目录默认在/var/ftp
2.本地用户:该类用户存在于服务器中,和本身有同样的访问权,默认登录在自己的家目录中。
3.虚拟用户:这类用户只能访问其主目录下的文件。

3.5.安装ftp服务器

安装命令yum -y install vsftpd为计算机安装ftp服务器

3.6.ftp配置文件

在/etc/vsftpd目录下:
vsftpd.conf:主配置文件
ftpusers:指定哪些用户不能访问FTP服务器
user_list:指定一部分用户,指定的用户是否可以访问ftp,通过vsftpd.conf文件中的参数的配置来决定配置中的用户是否可以访问。默认是在此文件中的用户不能访问FTP服务器。该配置文件中的众多参数关系到建立传输和数据传输的详细信息:
anonymous_enable=YES允许匿名用户登录;
local_enable=YES是否允许本地用户登录;
write_enbale=YES是否允许用户有写入权限;
local_umask=022本地用户新建文件时的umask值;
local_root=/home本地用户的根目录

anon_upload_enable=YES匿名用户能可以上传文件;
anon_mkdir_write_enable=YES匿名用户可以创建目录;
anon_other_write_enable=NO匿名用户没有更改的权限;
anon_world_readable_only=YES匿名用户可以下载只读文件;

download_enable=YES是否可以下载;
chown_upload=NO不允许修改上传文件的用户所有者
chroot_local_user=YES将本地用户锁在自己主目录中;

chroot_list_enable=YES将部分用户锁在自己的主目录中;
chroot_list_file=/etc/vsftpd/chroot_list指定这部分用户文件;
allow_writeable_chroot=YES允许这部分用户修改自己主目录;

ascii_upload_enable=NO不以ascii模式上传文件;
ascii_download_enable=NO不以ascii模式下载文件;
guest_enable=NO不启用虚拟用户;
guest_username=ftp设置虚拟用户在系统中的名字;
ftp_username=ftp设置匿名用户在系统中的名字;
listen_port=21设置ftp服务的监听端口;

userlist_enable=YES允许userlist_file文件中的用户访问ftp;
userlist_deny=YES不允许userlist_file文件中的用户访问ftp;
(只有enable=YES,同时deny=NO,文件中的用户才能访问ftp)

3.7.传输权限设置

要进行自由的文件上传下载还需要进过重重关卡才可以。

  1. 如果使用filezilla、xftp等软件进行ftp登录,那么要在这些软件的传输设置中将传输模式改为主动模式。
  2. 服务器上如果有防火墙,那么一定要先开启21端口,命令是firewall-cmd --zone=public --add-port=21/tcp --permanent打开端口,然后firewall-cmd --reload更新防火墙记录。
  3. 默认情况下ftpusers和user_list两个文件可以当做ftp服务的黑名单,所以对于想让其进行ftp登录,就不能出现在这两个目录中,默认的只有root和一些系统用户。
  4. 设置关闭SELinux权限,如果不想关闭SELinux,就将和ftp有关的SELinux全部置1
  5. 全部设置完之后,重启并设置自启ftp
    systemctl stop vsftpd.service
    systemctl start vsftpd.service
    systemctl enable vsftp.service

3.8.Linux客户端设置

客户机上安装ftp软件包并且开启端口之后,就可以连接服务器,命令ftp + 服务器IP,输入账户密码(匿名用户不需要密码直接回车)即可访问服务器。
登录后进入ftp交互模式界面:
quit/bye结束ftp会话;
cd更改远程工作目录;
chmod更改远程文件的文件权限;
dir列出远程目录内容;
exit退出ftp;
get/recv接收文件;
put/send发送文件;
!在主机上调用交互shell;
mput发送多个文件;…

3.9.windows自带ftp系统访问Linuxftp

win10修改方法是右下角windows图标,打开windows设置,搜索internet选项,切换到高级列,找到使用被动FTP这一栏,将前面的钩取消掉即可。因为默认的ftp服务器是主动模式。

3.10. 真实服务器搭建日志(2018.12.16)

3.10.1.服务器

1.阿里云ESC云主机,centos7,Linux内核3.10.0,64位系统
2.下载服务安装包yum -y install vsftpd
3.开启防火墙端口20,21
firewall-cmd --zone=public --add-port=20/tcp –permanent
firewall-cmd --zone=public --add-port=21/tcp –permanent
firewall-cmd –reload
4.关闭selinux对ftp的限制setenforce 0
5.修改配置文件vim /etc/vsftpd/vsftpd.conf
删改参数:

anonymous-setup

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

globol-set

write_enable=YES
connect_from_port_20=YES

globol-default

listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
xferlog_enable=YES
xferlog_std_format=YES
dirmessage_enable=YES
tcp_wrappers=YES
#localuser-set
local_enable=YES
local_umask=022
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
普通用户都被绑定在自己的工作目录下,可以增删改,匿名用户被绑定在/var/ftp/pub/anonymous/目录下,可任意删改
6. 编辑chroot_list,vim chroot_list
7. 将需要登录的成员放入,如ftp,myself
8. 在匿名用户目录下创建可操作文件夹
mkdir -p /var/ftp/anonymous/
9. 给该文件夹赋予其他人可操作权限,服务器配置完成
chmod 777 /var/ftp/anonymous/

3.10.2客户端

centos7本地虚拟机
windows将ftp模式改为主动模式,从资源管理器访问服务器
ftp://39.xxx.xxx.xxx (我云服务器IP)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值