Centos7.6搭建FTP服务器

搭建环境:Centos7.6版本、生产服务器、计划默认端口6000、被动模式端口6001-6005

一、关闭防火墙

为了避免不必要的麻烦,我们先关闭防火墙,等搭建成功之后再开启防火墙和相应的端口。

systemctl status firewalld.service  #查看防火墙状态
systemctl stop firewalld.service   #停止防火墙服务
systemctl disable firewalld.service #关闭防火墙开启自启动
vi /etc/selinux/config   #把文件中的SELINUX=enforcing 改为SELINUX=disabled

二、安装vsftpd

1、安装vsftpd

yum install -y vsftpd

版本: vsftpd.x86_64.0.3.0.2-22.el7

2、启动服务

systemctl start vsftpd.service 启动服务
systemctl enable vsftpd.service 设置开机自动启动服务

三、编辑配置

vi /etc/vsftpd/vsftpd.conf #编辑配置文件

anonymous_enable=NO       #是否开启匿名用户,匿名都不安全,不要开
local_enable=YES          #允许本机账号登录FTP
write_enable=YES          #允许账号都有写操作
local_umask=022           #意思是指:文件目录权限:777-022=755,文件权限:666-022=644,这有点反人类了,并且没有人跟我说是减去的。注意理解!
dirmessage_enable=YES     #进入某个目录的时候,是否在客户端提示一下
xferlog_enable=YES        #日志记录
connect_from_port_20=YES  #开放port模式的20端口的连接
xferlog_std_format=YES    #日志成为std格式
chroot_local_user=YES     #限制用户只能在自己的目录活动
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=NO      #是否允许使用ls -R等命令
listen=YES                #监听ipv4端口,开了这个就说明vsftpd可以独立运行,不用依赖其他服务
pam_service_name=vsftpd   #pam模块的名称,放置在 /etc/pam.d/vsftpd ,认证用
userlist_enable=YES       #使用允许登录的名单
userlist_deny=NO          #限制允许登录的名单,前提是userlist_enable=YES,其实这里有点怪~!
allow_writeable_chroot=YES     #允许限制在自己的目录活动的用户 拥有写权限
tcp_wrappers=YES               #Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性。
pasv_min_port=6001             #被动模式起始端口,0为随机分配
pasv_max_port=6005             #被动模式结束端口,0为随机分配
user_config_dir=/etc/vsftpd/userconfig    #主目录配置,修改后到这个目录中在修改用户配置

纯净版配置文件:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=NO
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
allow_writeable_chroot=YES
tcp_wrappers=YES
pasv_min_port=6001
pasv_max_port=6005
user_config_dir=/etc/vsftpd/userconfig

修改完之后需要重启FTP服务刷新配置:

systemctl start vsftpd.service   #重启FTP服务

建议:把默认21端口,最好和pasv端口改成连续的。

例如:FTP的默认监听端口为6000,pasv端口范围改为6001-6005 (5个就够了)那么这样架设到公网的话,只需要在路由器里面端口映射一条就好了,一般的路由器端口映射的数量是有限制的。要不然你最少要设置两条。高端路由器可以不连续的设置一条。我这边是公司60条已经全部占满了,所以得省着点用。

四、新建用户并设置密码

1、新建用户:helloftp

我们如果直接使用useradd -d helloftp新建的用户是可以登录系统的。这样会给FTP服务器带来安全隐患。因此我们必须不能让FTP用户登录系统。为ftp用户统一创建一个不能登录系统的shell,这一行的命令只运行一次即可,后面新建用户就不需要执行了

echo /usr/bin/nologin>>/etc/shells

注意这里的bin 不是sbin

创建用户

useradd -d /home/ftp_data/helloftp -m -s /usr/bin/nologin helloftp
  • 指定用户主目录/home/ftp_data/helloftp -m
  • 指定用户的shell: -s /usr/bin/nologin

需要注意的是,如果公司有员工离职,需要删除其账号。那么我建议你先把该用户内的资料先转移其他目录,再对用户进行删除操作,方式数据丢失。

2、设置用户helloftp密码

passwd helloftp

五、允许新建用户登录FTP

vi /etc/vsftpd/user_list

编辑/etc/vsftpd/user_list ,这个是允许登录ftp的名单。一行一个用户,不能把多个写到一行。

到了这一步,FTP其实就可以登录了。

但是有个非常大的缺点就是,我们没有给用户指定主目录,这样的话默认每个用户的主目录都在自己的家目录。也就是说每个用户的主目录都是在不同目录中,这样的状况会给我们后期数据备份带来不便。所以我们必须想办法把用户主目录集中管理,最好能放到一个目录里面。

六、自定义用户主目录

如果你在上面没有指定用户的目录,建议继续往下看。

在这里我们准备把用户主目集中放到/home/data/ftp下集中管理。之前我们在/etc/vsftpd/vsftpd.conf配置文件中写了这么一行:user_config_dir=/etc/vsftpd/userconfig ,那么这一行的作用是什么呢?就是定义用户的主目录。userconfig默认是没有的,必须新建。然后我们可以把,给每个用户定义的主目录配置文件放到这个目录里面下。就可以实现自定义主目录。

1、新建主目录配置

mkdir /etc/vsftpd/userconfig
vim /etc/vsftpd/userconfig/helloftp    #新建主目录配置文件helloftp,配置文件名字必须要和用户名相同helloftp文件中写入下面一行保存:
local_root=/home/ftp_data/helloftp

注意:配置文件名字必须要和用户名相同。

2、给用户新建主目录并授权

mkdir -p /home/ftp_data/helloftp
chmod -R 777 /home/ftp_data/helloftp

七、防火墙配置

我们的监听端口是6000,被动模式端口范围是6001-6005

firewall-cmd --version   #查看防火墙版本
0.6.3
firewall-cmd --zone=public --add-port=6000-6005/tcp --permanent  #开启6000-6005 tcp端口
success
firewall-cmd --reload  #刷新,重新载入
success
firewall-cmd --zone=public --query-port=6000-6005/tcp  #检测端口是否开启
yes

至此搭建成功。

八、注意事项

1、设置了 chroot_local_user=YES 后,用户不能登录,原因是没设置 allow_writeable_chroot=YES

2、重启服务器后无法连接FTP,原因是你防火墙没有关闭彻底。

3、不建议把用户主目录放在根目录,建议放到home目录。

4、如果你要架设到公网,端口映射的时候要把默认端口和pasv端口一起映射,单纯映射默认端口是访问不到的。

5、下面附vsftpd.conf配置文件的详细解析:

anonymous_enable=NO            #是否开启匿名用户,匿名都不安全,不要开
local_enable=YES               #允许本机账号登录FTP
write_enable=YES               #允许账号都有写操作
local_umask=022                #意思是指:文件目录权限:777-022=755,文件权限:666-022=644,这有点反人类了,并且没有人跟我说是减去的。注意理解!
#anon_upload_enable=YES        #匿名用户是否有上传文件的功能,不要开
#anon_mkdir_write_enable=YES   #匿名用户是否有创建文件夹的功能,不要开
dirmessage_enable=YES          #进入某个目录的时候,是否在客户端提示一下
xferlog_enable=YES             #日志记录
connect_from_port_20=YES       #开放port模式的20端口的连接
#chown_uploads=YES             #允许没人认领的文件上传的时候,更改掉所属用chown_uploads=YES的前提下,所属的用户
#xferlog_file=/var/log/xferlog #日志存放的地方
xferlog_std_format=YES         #日志成为std格式
#idle_session_timeout=600      #用户无操作服务器会主动断开连接,单位秒
#data_connection_timeout=120   #数据连接超时
#nopriv_user=ftpsecure         #以 ftpsecure 作为此一服务执行者的权限。因为ftpsecure 的权限相当的低,因此即使被入侵,入侵者仅能取得nobody 的权限喔!
#async_abor_enable=YES         #异步停用,由客户发起
#ascii_upload_enable=YES       #使用ascii格式上传文件
#ascii_download_enable=YES     #使用ascii格式下载文件
#ftpd_banner=Welcome to blah FTP service  #欢迎词
#deny_email_enable=YES         #以anonymous用户登录时候,是否禁止掉名单中的emaill密码。
#banned_email_file=/etc/vsftpd/banned_emails  #以anonymous用户登录时候,所禁止emaill密码名单。
chroot_local_user=YES          #限制用户只能在自己的目录活动
#chroot_list_enable=YES        #例外名单,如果是YES的话,这个有点怪,不懂别乱开,上面的选项会跟这个名单反调(会被上面的选项影响)。
#chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=NO           #是否允许使用ls -R等命令
listen=YES                     #监听ipv4端口,开了这个就说明vsftpd可以独立运行,不用依赖其他服务。
#listen_ipv6=YES               #监听ipv6端口,还没普及呢!
pam_service_name=vsftpd        #pam模块的名称,放置在 /etc/pam.d/vsftpd ,认证用
userlist_enable=YES            #使用允许登录的名单
userlist_deny=NO               #限制允许登录的名单,前提是userlist_enable=YES,其实这里有点怪~!
allow_writeable_chroot=YES     #允许限制在自己的目录活动的用户 拥有写权限
tcp_wrappers=YES               #Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性。
user_config_dir=/etc/vsftpd/userconfig  #主目录配置,修改后到这个目录中在修改用户配置pasv_min_port=6000 (0为随机分配)
pasv_max_port=6010(这两项定义了可以同时执行下载链接的数量。)
#被动模式端口范围:注意:linux客户端默认使用被动模式,windows 客户端默认使用主动模式。在ftp客户端中执行"passive"来切换数据通道的模式。也可以使用"ftp -A ip"直接使用主动模式。主动模式、被动模式是有客户端来指定的。

九、创建用户脚本脚本

#bin/bashread -p 请输入要新建的用户名: xinuser#判断是否为空或名称重复id $xinuser &>/dev/null
if [ $? -ne 0 ]thenuseradd -d /home/ftp_data/$xinuser -m -s /usr/bin/nologin $xinuserecho $xinsuer >>  /etc/vsftpd/user_listecho "用户$xinuser成功创建"passwd $xinuserelseecho "用户$xinuser已存在或者输入用户名错误,程序已终止"exit
fi

Centos7.6搭建FTP服务器相关推荐

  1. centos7 pam mysql.so,Centos7下搭建FTP服务器(博主亲测不坑)

    Loading... 领导要用,虽然不知道用途是干啥的,估计跟我们最近做的项目有关系.网络上搜出来的教程很多,配置复杂,而且不一定成功,很烦,我的配置肯定能用,保证不坑. 一.关闭防火墙.SELinu ...

  2. 在阿里云CentOS7上搭建ftp服务器

    当我再次被各种出站入站规则玩弄,在搜索引擎的帮助走出泥淖后,我决定记下这次经历 1. FTP服务器的部署 1.1 安装vsftpd   笔者使用的是阿里云的ECS服务器(这不是广告,而是提醒:P),操 ...

  3. CentOS7.4搭建FTP服务器(vsftp)

    很多情况我们需要在Linux安装FTP服务器进行文件传输,这里介绍一下安装FTP服务器的步骤和需要注意的点 1.安装vsftp服务 yum install vsftpd -y 2.修改配置(不然会导致 ...

  4. Centos7安装搭建FTP服务器VSFTPD

    简介: vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点. vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以 ...

  5. CentOS7种搭建FTP服务器

    1.安装vsftpd #首先要查看你是否安装vsftp [root@localhost /]# rpm -q vsftpd vsftpd-3.0.2-10.el7.x86_64             ...

  6. CentOS7种搭建FTP服务器 1

    安装vsftpd 首先要查看你是否安装vsftp [root@localhost /]# rpm -q vsftpd vsftpd-3.0.2-10.el7.x86_64 #显示也就安装成功了! 如果 ...

  7. centos+7虚拟机web服务器,CentOS7上搭建WEB服务器

    mysql 安装 直接yum install mysql-server是不可以的 1 wget http://repo.mysql.com/mysql-community-release-el7-5. ...

  8. Centos7.6利用vsftpd搭建FTP服务器详细教程

    Centos7搭建FTP服务器 目录 Centos7搭建FTP服务器 一.关闭防火墙 二.安装vsftpd并启动服务 1.安装vsftpd 2.启动服务 三.编辑配置 四.新建用户并设置密码 1.新建 ...

  9. CentOS7 安装配置FTP服务器详解

    CentOS7 安装配置FTP服务器详解 1.FTP简介 ftp(File Transfer Protocol文件传输协议)是基于TCP/IP 协议的应用层协议,用于文件的传输,包括ftp服务器(或服 ...

  10. 如何查看linux上的ftp服务器配置,ftp服务器配置:如何在Linux上搭建FTP服务器?

    Linux搭建FTP服务器的话,直接使用系统自带的vsftpd服务器即可,轻便灵活,容易操作,下面我简单介绍一下安装和使用过程,感兴趣的朋友可以尝试一下ftp服务器配置: 01安装vsftpd首先ft ...

最新文章

  1. 用几条shell命令快速去重10G数据
  2. Platform Builder 6.0与Windows 7兼容性的问题
  3. 神策数据张涛:如何让用户标签价值落地?
  4. 文件包含漏洞——DVWA练习
  5. MySQL中的字符串连接
  6. mysql5.7.14安装版_MySql5.7.14安装教程详解(解压版)_MySQL
  7. python硬件测试开发工程师_硬件测试工程师
  8. linux 一次对一个用户限制存取
  9. 程序人生之二 IoC—如何才能快乐
  10. heidisql导出为mysql_HeidiSQL工具导出导入MySQL数据
  11. 机器学习如何帮助Caesars大涨邮件绩效
  12. html5微相册,微信开发 微信H5开发 微信小程序 微报名 微相册 微**
  13. 鼠标抖动问题(macbook下安装的win7系统)
  14. 百度文字识别 百度OCR接口申请
  15. php对plc的TCP通信,西门子1200PLC进行TCP通讯配置详解
  16. SQLMap使用|命令大全(干货)
  17. Hadoop HDFS实现机架感知
  18. Qt数据库应用19-图片转pdf
  19. 联通 位置服务器,中国联通服务器名称或地址
  20. 为了一窥究竟,我抓取了全校学生的毕设信息

热门文章

  1. tif数据84坐标经纬度转Unity3D坐标
  2. 中国IT排名百强公司
  3. 数字图像处理王慧琴课后答案_数字图像处理课后题答案
  4. TCP通信协议基本操作
  5. POJ - 3537 Crosses and Crosses (MLI - SG)
  6. Python爬取周杰伦的200首歌+BI可视化分析
  7. 阿里云虚拟主机和服务器的区别
  8. AAAI 2020对抗样本论文
  9. linux系统发送短信,Linux系统的短信收发怎么实现?
  10. 阿里网盘“该文件类型暂时不支持分享”解决方案