【图文教程】FTP服务搭建与配置

本文详细介绍了在Linux环境下如何搭建FTP服务,包括使用vsftpd和pure-ftpd搭建FTP,以及如何使用xshell配合xftp进行文件传输。内容涵盖了FTP的基本概念、安全性和常用命令,适合需要进行Linux服务器文件传输的读者。
摘要由CSDN通过智能技术生成

1. FTP介绍

FTP 和 NFS 类似,也是文件共享传输相关的一种服务,FTP 是 File Transfer Protocol(文件传输协议) 的英文简称,而中文简称为“文传协议”。用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用 Internet 语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

我们都知道 xshell 支持 rz 和 sz 命令,可以让 windows 和 Linux 机器互相传输文件,但是这种传输方式有限制,例如超过四个 G 的文件就无法传输,又或者通过跳板机登录的一台远程服务器,也无法使用 rz 和 sz 命令来传输文件。这种情况下就可以使用 FTP 来解决这个问题。

我们可以在远程服务器上搭建一个 FTP 服务,如果 Windows 作为客户端就可以下载一个客户端软件,连接上服务器的 FTP 服务,然后就可以进行互传文件了,这种就叫 FTP 服务器。

但是如果在企业应用中,大企业的话是不使用 FTP 的,因为不是很安全,而且对于版本管理上并不是很好,所以一般只有小公司或者个人的网站之类的会使用 FTP。大企业都是使用自动化发布类似于 git 这种能够很好地进行版本控制的服务平台。

2. 使用vsftpd搭建FTP

  • centos 上自带的 FTP 软件 vsftpd,默认没有安装,需要用 yum 安装
[root@sc ~]# yum install -y vsftpd
  • 安装后,不用配置,可以直接使用,默认支持使用系统账号登录,但是因为安全原因,需要建立账号体系

虽然 vsftpd 可以直接使用系统级别的用户,但是这样做不安全,所以我们要创建虚拟用户去映射这个普通用户,而虚拟用户是可以映射多个的,由于创建普通用户时候指定了 /sbin/nologin,这样的话即便有账户和密码也无法登陆系统,这样能够提高安全性,编辑 vsftpd_login 文件,这是虚拟用户的密码文件。

[root@sc ~]# useradd -s /sbin/nologin virftp   #然后创建virftp,作为这个服务的映射用户
[root@sc ~]# vim /etc/vsftpd/vsftpd_login      #编写账号、密码文件

test_sc01    #用户名
123          #密码
test_sc02    #用户名
123          #密码
  • 保存退出后给这个文件授予 600 权限,因为这是密码文件不能给所有的用户都可以读
[root@sc ~]# chmod 600 /etc/vsftpd/vsftpd_login
  • vsftpd 使用的密码不是明文,所以需要生产相对应的库文件
[root@sc ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db  #生成库文件
[root@sc ~]# ls -l /etc/vsftpd/
total 36
-rw-------. 1 root root   125 Oct 31  2018 ftpusers
-rw-------. 1 root root   361 Oct 31  2018 user_list
-rw-------. 1 root root  5116 Oct 31  2018 vsftpd.conf
-rwxr--r--. 1 root root   338 Oct 31  2018 vsftpd_conf_migrate.sh
-rw-------. 1 root root    28 May 24 13:54 vsftpd_login
-rw-r--r--. 1 root root 12288 May 24 14:00 vsftpd_login.db  #此为生成的库文件密码
  • 创建虚拟用户的配置文件所在的目录,进入到该目录
[root@sc ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@sc ~]# cd /etc/vsftpd/vsftpd_user_conf
[root@sc vsftpd_user_conf]#
  • 创建一个配置文件,这个配置文件的名称必须和你在 vsftpd_login 文件里定义的用户名一致
[root@sc ~]# cd /etc/vsftpd/vsftpd_user_conf  
[root@sc vsftpd_user_conf]# vim test_sc01


local_root=/home/virftp/test_sc01    #新建 test_sc01 账号的配置文件
anonymous_enable=NO                  #是否允许匿名用户
write_enable=YES                     #是否允许可写
local_umask=022                      #创建新目录和文件的权限
anon_upload_enable=NO                #是否允许匿名用户上传
anon_mkdir_write_enable=NO           #是否允许匿名用户可创建
idle_session_timeout=600             #连接后没有任何操作的超时时间,空闲时间段
data_connection_timeout=120          #数据传输超时时间
max_clients=10                       #最大允许连接的 clients 客户端
  • 创建账号 test_sc01 的家目录,并在其下面创建新文件
[root@sc vsftpd_user_conf]# mkdir /home/virftp/test_sc01           #定义完虚拟用户的配置文件之后,创建用户的家目录
[root@sc vsftpd_user_conf]# touch /home/virftp/test_sc01/test.txt  #在家目录下创建一个文件,等会登录虚拟用户时就能看到这个文件
[root@sc vsftpd_user_conf]# chown -R virftp:virftp /home/virftp    #修改 virftp 家目录的权限,因为虚拟用户要映射到这个用户上
[root@sc vsftpd_user_conf]#
  • 配置认证文件及路径,按下面增加 2 行语句,注意每行语句后面不能有空格
[root@sc vsftpd_user_conf]# vim /etc/pam.d/vsftpd

#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login     #新增语句
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login  #新增语句
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值