需求:在内部环境中部署FTP服务,供其他人员通过公共路径下载数据

由于不能连接外网,不能使用大部分网友介绍的yum安装方法,且未找到一篇完整的介绍FTP服务部署到使用的文章,因此,整理了整个部署流程,希望对大家有帮助。

一、 前期准备

ftp由客户端和服务器端两部分组成。在linux下,服务器端采用vsftpd 。vsftpd 的全名是『Very Secure FTP Daemon 』,它是一个ftp服务器。由于其支持change root directory且相对其他ftp更安全的特点,常常作为公司搭建ftp服务器时的首选。(此段介绍来自:https://www.jianshu.com/p/0c7bbbf22172)

服务端下载链接:http://www.rpmfind.net/linux/rpm2html/search.php?query=vsftpd

客户端下载链接:http://rpmfind.net/linux/rpm2html/search.php?query=ftp

官网man手册链接:https://linux.die.net/man/5/vsftpd.conf

参考链接:http://cn.linux.vbird.org/linux_server/0410vsftpd/0410vsftpd-centos4.php

https://www.cnblogs.com/guohongwei/p/10848698.html

二、服务器端安装部署与配置

2.1 安装  (参考链接:https://www.cnblogs.com/LHWorldBlog/p/8516837.html)

下载服务器端rpm包之后,通过如下命令安装:

rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm

注:本想通过--prefix指定安装路径,报错,出现error: package ftp is not relocatable错误。利用--relocate同样出错,最后只能用root用户安装到默认路径。若想在linux环境下通过命令行方式访问ftp服务,则需要安装客户端。

2.2 修改配置文件

vsftpd成功安装后,会在系统的多个目录生成文件,包括:

1./etc目录下
/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
/etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器。  黑名单 (针对用户访问模式是实体用户方式)
/etc/vsftpd/user_list:指定允许使用vsftpd 的用户列表文件。  白名单
/etc/passwd下生成一行代码
2.还会在bin目录下生成可执行文件

本人的具体配置如下:

anonymous_enable=NO  #允许匿名用户访问为了安全选择关闭
local_enable=YES   # 允许本地用户登录
write_enable=YES   # 是否允许写入
local_umask=022  # 本地用户上传文件的umask
anon_upload_enable=NO
dirmessage_enable=YES #为YES则进入目录时显示此目录下由message_file选项指定的文本文件(,默认为.message)的内容
xferlog_enable=YES #开启日志
xferlog_std_format=YES #标准格式
connect_from_port_20=YES
xferlog_file=/home/wusongsong/ftp/ftplog   #ftp日志目录,可修改成常用目录idle_session_timeout=6000 #设置客户端连接时间
data_connection_timeout=1200 #设置数据连接时间 针对上传,下载
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list #设置为YES则下面的控制有效
#chroot_list_enable=YES #若为NO,则记录在chroot_list_file所指定的文件(默认是/etc/vsftpd.chroot_list)中的用户将被chroot在登录后所在目录中,无法离开.如果为YES,则所记录的用户将不被chroot.这里YES.
chroot_local_user=YES   #限制用户本地目录,当想修改用户登录目录时使用,与本文档最后几句设置配套,即限制本地用户的登录目录;与chroot_list不同点在于,chroot_local是限制本地用户,chroot_list是限制其他用户。限制的登录目录设置参数为:local_root。userlist_enable=YES #(NO)
#是否藉助 vsftpd 的抵挡机制来处理某些不受欢迎的账号,与底下的设定有关;
#若为NO,则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd/userlist)
userlist_deny=NO #(NO)
#与上一个参数有关,当 userlist_enable=YES 时才会生效的设定,若此设定值为 YES 时,则当使用者账号被列入到某个档案时, 在该档案内的使用者将无法登入 vsftpd 服务器!该档案文件名与下列设定项目有关。
#若设定为NO,则为只允许user_list内的用户访问(亲测)
userlist_file=/etc/vsftpd/user_list
若上面 userlist_deny=YES 时,则这个档案就有用处了!在这个档案内的账号都无法使用 vsftpd 喔!listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES#added by wss
#修改用户登录主目录,需要添加如下代码,且需设置chroot_local_user=YES ,并且需在配置文件目录下新建chroot_list文件,在里面添加需要修改登录目录的用户
local_root=/hdfs/tmp #根目录
anon_root=/hdfs/tmp
allow_writeable_chroot=YES

注意:这只是启动vsftpd服务的一般通用性配置,若有更深一步的要求,得深入了解配置文件其他参数,中文文档:https://blog.csdn.net/m0_37355951/article/details/76974622。

2.3 关闭防火墙并启动vsftpd服务

关闭防火墙:
centos 7操作为systemctl stop firewalld.service
centos 6操作位service stop iptables启动服务:
cetos 7操作为systemctl start  vsftpd.service
centos 6操作为 service vsftpd restart并利用systemctl status  vsftpd.service查看状态检查SElinux状态并关闭:getsebool -a|grep ftp

到此安装结束,在浏览器登录(登录链接有多种,最简单的是):ftp://your server IP 。也可以安装ftp客户端进行连接。

三、修改用户访问公共路径

#修改用户登录主目录,步骤如下:

1. 修改配置文件
设置chroot_local_user=YES 2. 在配置文件添加如下代码:
local_root=/hdfs/tmp #根目录
anon_root=/hdfs/tmp
allow_writeable_chroot=YES3.在配置文件目录下新建chroot_list文件,在里面添加需要修改登录目录的用户名

注:更高级别的,需要考虑安全问题,设置各个用户的主目录、设置访问权限等等。本文不做介绍~

四、错误集锦

在整个安装部署中遇到几个问题,进行总结。

错误一:VSFTP启动失败-Failed to start Vsftpd ftp daemon

分析原因:上网查找问题解决办法,有人说listen改成NO,但我的配置文件已经是NO了,所以这个方法不行,有人说端口占用问题,看了一下端口,21-20都是没服务占用,只能想其他办法了,关闭防火墙和SELinux来测试最好,排除其他干扰因素。解决方案:
一般是配置文件的问题:仔细查看配置文件再修改
有一次出现启动失败是因为配置文件新增参数拼写错误,因此,需详细检查配置文件~~

错误二:500 OOPS:run two copies of vsftpd for IPV4 and IPv6

产生这个异常的原因是因为你在配置文件中同时存在ipv4与ipv6的相关配置,IPv4和IPv6设置参数只设一个即可;
另外,若想同时支持ipv4与ipv6,也有方法,即在配置文件目录下,新建两份vsftpd.conf文件,一份中设置允许ipv4,一份中设置ipv6,重启服务即可。
详情参考链接:https://www.jianshu.com/p/0c7bbbf22172

错误三:500 OOPS:vsftpd: refusing to run with writable root inside chroot()

出现原因:
此错误出现在当我需要修改用户访问主目录时,将配置文件中chroot_local_user=YES设为YES了。
网上资料显示原因:
参考链接:https://blog.csdn.net/bluishglc/article/details/42399439
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:
修改配置文件:allow_writeable_chroot=YES   ## 添加解决:
因为我的访问目录不是新建的vsftpd虚拟用户,因此不能去除用户主目录的写权限,所以采用第二种方案,在配置文件中增加allow_writeable_chroot=YES 。问题解决!

错误四:启动成功后,输入链接,看到共享路径下的内容,可下载。但是没数据下载后,没一会就重新弹出登录用户对话框。

出现原因:
超时重连接设置;解决:
修改/etc/vsftpd/vsftpd.conf文件中,idel_session_timeout的取值。
然后重启ftp服务,问题即解决。

错误五:启动成功后,并且最大连接时也已设置,还总是弹出登录对话框。

出现原因:
1.firefox浏览器兼容性问题,解决方案:换个浏览器google chrome等;2. pam文件问题
官网参考:
https://security.appspot.com/vsftpd/FAQ.txt
修改/etc/pam.d下的vsftpd规则;我看网上资料,将auth required pam_shells.so 规则去掉
且在/etc/vsftpd/目录下修改ftpuser,删除想要其访问ftp服务的用户。(因为ftpuser文件是限制使用FTP的黑名单)

这些链接还不错,收藏:https://blog.csdn.net/fafa211/article/details/8095081

https://blog.51cto.com/longlei/2068636

linux:通过rpm包部署FTP服务相关推荐

  1. Linux 中RPM包的安装

    Linux 中RPM包的安装 在linux的使用过程中,会用到各种各样的服务,所以就会安装许多软件包. 所以就总结了下边的两种安装方式: 1. 二进制安装 软件包的安装及相关命令: rpm -ivh ...

  2. Docker下部署ftp服务

    Docker下部署ftp服务 文章目录 Docker下部署ftp服务 前言 一. 查找vsftpd镜像 二.pull vsftpd最新版镜像到本地 二.配置vsftpd 1.创建vsftpd容器 2. ...

  3. Linux安装RPM包、查看本机ip和端口、手动配置ip、中标麒麟无法显示ip地址的详细解决方法

    文章目录 安装rmp Linux安装RPM包.DEB包后,软件在哪 RPM包安装去向(例:包名=>redis) 查看本机ip 查看所有端口 手动配置ip 中标麒麟无法显示ip地址的详细解决方法 ...

  4. [Linux]zerotier阿里云部署moon服务实现内网穿透

    [Linux]zerotier私有云部署moon服务实现内网穿透 一.前言 zerotier+阿里云ESC服务器+MacBook Air(M1)+openwrt 二.zerotier基本使用(直连外网 ...

  5. 【Linux学习笔记】Linux Centos7.4下的Ftp服务的搭建和使用及加密

    Linux Centos7.4下的Ftp服务的搭建和使用 服务简介 一.Ftp服务的安装 1.1.安装ftp服务 1.2.启动ftp服务 1.3.将ftp服务设置为开机启动 1.4.停止ftp服务 二 ...

  6. linux ntp rpm包下载,centos7.5 离线安装ntp服务

    一.先查看ntp是否已经安装:rpm -q ntp 二.查看系统版本 三.下载ntp组件 centos7.5版本 #从https://pkgs.org/download/ntp 下载rpm包 ntp- ...

  7. 部署yum仓库及部署FTP服务

    目录 前言: 一.YUM概述 二.yum工具yum命令含义 三.部署ftp源 1.服务端部署源服务器: 2.客户机端配置软件仓库位置 四.FTP服务 1.FTP简介 ⑴.FTP连接及传输模式 ⑵.FT ...

  8. linux运行rmp文件,linux 里rpm包到底是干什么用的啊?

    英文原义:RPM Package Manager 中文释义:RPM软件包管理器 注解:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件.与Dpkg类 ...

  9. linux 下载rpm包到本地,createrepo:创建本地YUM源

    如何下载rpm包到本地 设置yum安装时,保留rpm包. 1.编辑 /etc/yum.conf 将keepcache的值设置为1; 这样就可以将yum安装时的rpm包保存在 /var/cache/yu ...

最新文章

  1. 【深度学习】Dropout与学习率衰减
  2. java基础之包装类
  3. [C++11]initializer_lisr模板类的使用
  4. isnull mysql_mysql isnull用法讲解
  5. 洛谷-DFS-1019-单词接龙-个人AC题解和公共AC题解笔记
  6. python程序设计简明教程知识点总结_Python程序设计简明教程 在线阅读
  7. 利用RC.EXE和RCDLL.DLL创建VB6资源文件
  8. shx文件怎么导入cad_「设计师必备技能」打开cad图纸缺少shx字体,图纸乱码怎么办?...
  9. cents7配置gradle4
  10. C:\WINDOWS\system32\config\systemprofile\Desktop引用了一个不可用的位置
  11. 【转载】Windows 10 运行 Linux子系统的图形界面程序
  12. 电子邮件注册网站是什么,163电子邮件注册流程详解
  13. python软件安装教程-Python-中文版软件安装包以及安装教程
  14. postgresql修改密码
  15. 正则表达式、常用的匹配总结
  16. 大数据分析对电子商务行业有哪些改变?
  17. Android ROM 打包记录
  18. 试用多片2K×8的RAM扩展为4K×16的RAM(下面用多片1K×4的RAM扩展为2K×8的RAM代替之, 二者原理相同)(二〇二〇年山东大学数字电路906综合题第1题)(全网第一手资料)
  19. 数据结构考研复试、工作面试常见问题及答案(动画版)
  20. H.266代码学习:JEM使用方法

热门文章

  1. 职业规划系列文章之一
  2. 配置本地时间服务器(集群)
  3. Keil同时安装C51与ARM环境
  4. _bstr_t与BSTR
  5. Spring注解定义 bean 的12种方法
  6. 百度地图定位到大西洋问题,还有官方demo验证key失败问题
  7. sscanf 从字符串中读取与制定格式相符的数据
  8. 写布局时,实时显示的模拟器UI底下菜单栏如何去掉
  9. c语言中短整形字节,C语言中各种整型类型所占字节数
  10. 学习openvz虚拟机