14.1-14.5 预习笔记

1.FTP介绍

FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。

FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。

文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。

与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

 

FTP服务一般运行在20和21两个端口。一次完整的 FTP 会话,包含有两个连接,一个称之为命令通道(控制连接,通过21端口),一个称之为数据通道(数据连接,通过20端口)。

 

其中数据连接有两种传输模式:

1.PORT 主动连接:

客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

 

2.PASV 被动连接:

客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

 

建立数据通道时,用 PORD 模式还是 PASV 模式,选择权在于 FTP 客户端。

---------------------

作者:白糕茶

来源:CSDN

原文:https://blog.csdn.net/qq_22550197/article/details/72872932

版权声明:本文为博主原创文章,转载请附上博文链接!

 

小公司用的多,大企业不用FTP,因为不安全; 大企业会使用Git来自动化批量发布更新上线

 

 

2-3.使用vsftpd搭建ftp服务

CentOS上默认的自带的ftp服务的软件包为vsftpd, yum install -y vsftpd

1)vsftpd可以使用系统级别的用户来登录,但是因为有密码所以并不安全,我们为ftp设置一个虚拟用户,然后把虚拟用户映射成系统中的一个或者多个用户普通用户

useradd -s /sbin/nologin virftp

这里virftp为虚拟用户来映射普通用户

登录的shell为-s /sbin/nologin, 也就是virftp这个用户不可以登录操作系统,指可以以virftp的身份来进行文件传输

 

2)vim /etc/vsftpd/vsftpd_login, 这个文件为虚拟用户的密码文件

奇数行为用户名,偶数行为密码,多个用户就写多行

chmod 600 /etc/vsftpd/vsftpd_login

 

3)把文本文件/etc/vsftpd/vsftpd_login转化为计算机识别的二进制文件

db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

 

 

4)创建虚拟用户的配置文件所在的目录

 

mkdir /etc/vsftpd/vsftpd_user_conf

 

5)创建用户的配置文件

  • cd /etc/vsftpd/vsftpd_user_conf

  • vim 用户的配置文件名

注意文件的名字需要和在/etc/vsftpd/vsftpd_login密码文件中的用户名保持一致

例如,cat /etc/vsftpd/vsftpd_login,可以看见我们创建了testuser1和testuser2

 

所以我们vim testuser1, 写入下面的内容

local_root=/home/virftp/testuser1 ,用来定义虚拟用户的家目录

anonymous_enable=NO ,是否允许匿名用户

write_enable=YES 是否允许可写

local_umask=022 和系统的umask用法一样

anon_upload_enable=NO 是否允许匿名用户可上传

anon_mkdir_write_enable=NO 是否允许匿名用户可创建目录

idle_session_timeout=600 连接超过多少秒之后自动断开, 然后需要重新登录

data_connection_timeout=120

max_clients=10

 

6)创建虚拟用户的家目录

mkdir /home/virftp/testuser1

 

touch /home/virftp/testuser1/emma.txt

 

7)修改属主和属组

 

chown -R virftp:virftp /home/virftp

 

8)编辑登录ftp认证文件,来定义密码文件

vim /etc/pam.d/vsftpd ,把下面内容在最前面加上

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

 

9)再来编辑fptd的主配置文件

vim /etc/vsftpd/vsftpd.conf

 

  • 做下面的改动

将anonymous_enable=YES 改为 anonymous_enable=NO

将#anon_upload_enable=YES 改为 anon_upload_enable=NO

将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

 

  • 再增加如下内容

chroot_local_user=YES

guest_enable=YES enable虚拟用户功能

guest_username=virftp 定义虚拟用户

virtual_use_local_privs=YES 为了告知服务,我们使用的虚拟用户

user_config_dir=/etc/vsftpd/vsftpd_user_conf 用来指定虚拟用户所在的配置文件的路径

allow_writeable_chroot=YES

 

10)启动服务vsftpd

systemctl start vsftpd

我们使用ps aux和netstat -nltp,可以看到服务开启并且21端口也在被监听了,服务开启成功

 

11)服务开启后,我们来做实验

现在Windows系统中安装ftp服务客户端软件 filezilla client, 也可以为了测试方便安装linux上的ftp客户端软件

yum install lftp

  • lftp testuser1@127.0.0.1

输入我们之前在/etc/vsfpd/vsfpd_login中给用户设置的密码

输入ls, 可以看到我们之前在虚拟用户usertest1的家目录/home/virftp/testuser1创建的testuser1

输入?,可以看见ftp服务的所有选项,常用的为get/put

get filename, 会把文件download到当前的目录下

 

 

注:如何使用Xshell来实现类似于ftp数据传输的功能

方案1

在Xshell中新建一个session,把协议改成SFTP

 

然后再到SSH选项下SFTP下来定义默认的文件保存路径,例如我们把保存路径设到了桌面上

 

连接这个新建的session,可以使用cd/ls命令,我们get test.com.log, 在到windows的桌面看,就可以看见test.com日志已经被下载好了

 

 

 

方案二

使用xftp,先用ctrl alt f 来下载xftp插件

 

4.xshell使用xftp传输文件

 

先用ctrl alt f 来下载xftp插件,点击下图,然后可以选择free version

下载完成后,还是要Ctrl alt f,出现下面的页面,想要window和Linux互传只要拖拽文件即可

 

 

5.使用pure-ftpd搭建ftp服务

pure-ftpd比vsftpd更加简单

 

• yum install -y pure-ftpd, 安装这个需要先安装epel-release

• vim /etc/pure-ftpd/pure-ftpd.conf//找到pureftpd.pdb这行,把行首的#删除,指定密码文件

• systemctl stop vsftpd

因为pure-ftpd服务也是监听的21端口,所以要把vsftpd服务stop掉

• systemctl start pure-ftpd

 

• mkdir /data/ftp

创建目录给pure-ftpd的用户来使用

• useradd -u 1010 pure-ftp

• chown -R pure-ftp:pure-ftp /data/ftp

• pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp ,来添加虚拟用户,这个和vsftpd服务类似,都需要用虚拟用户映射系统用户来做

useradd 指定新虚拟用户的名字

-u 指定虚拟用户映射的系统用户

-d  指定虚拟用户的家目录

pure-pw可以加useradd 、usermod 、userdel

• pure-pw mkdb

执行这一步才能登陆

 

• pure-pw list/userdel/usermod/passwd

 

我们来做实验

在/data/ftp下创建一个文件123.txt

然后lftp ftp_usera@127.0.0.1,再ls就可以看见创建的123.txt

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值