linux:通过rpm包部署FTP服务
需求:在内部环境中部署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服务相关推荐
- Linux 中RPM包的安装
Linux 中RPM包的安装 在linux的使用过程中,会用到各种各样的服务,所以就会安装许多软件包. 所以就总结了下边的两种安装方式: 1. 二进制安装 软件包的安装及相关命令: rpm -ivh ...
- Docker下部署ftp服务
Docker下部署ftp服务 文章目录 Docker下部署ftp服务 前言 一. 查找vsftpd镜像 二.pull vsftpd最新版镜像到本地 二.配置vsftpd 1.创建vsftpd容器 2. ...
- Linux安装RPM包、查看本机ip和端口、手动配置ip、中标麒麟无法显示ip地址的详细解决方法
文章目录 安装rmp Linux安装RPM包.DEB包后,软件在哪 RPM包安装去向(例:包名=>redis) 查看本机ip 查看所有端口 手动配置ip 中标麒麟无法显示ip地址的详细解决方法 ...
- [Linux]zerotier阿里云部署moon服务实现内网穿透
[Linux]zerotier私有云部署moon服务实现内网穿透 一.前言 zerotier+阿里云ESC服务器+MacBook Air(M1)+openwrt 二.zerotier基本使用(直连外网 ...
- 【Linux学习笔记】Linux Centos7.4下的Ftp服务的搭建和使用及加密
Linux Centos7.4下的Ftp服务的搭建和使用 服务简介 一.Ftp服务的安装 1.1.安装ftp服务 1.2.启动ftp服务 1.3.将ftp服务设置为开机启动 1.4.停止ftp服务 二 ...
- linux ntp rpm包下载,centos7.5 离线安装ntp服务
一.先查看ntp是否已经安装:rpm -q ntp 二.查看系统版本 三.下载ntp组件 centos7.5版本 #从https://pkgs.org/download/ntp 下载rpm包 ntp- ...
- 部署yum仓库及部署FTP服务
目录 前言: 一.YUM概述 二.yum工具yum命令含义 三.部署ftp源 1.服务端部署源服务器: 2.客户机端配置软件仓库位置 四.FTP服务 1.FTP简介 ⑴.FTP连接及传输模式 ⑵.FT ...
- linux运行rmp文件,linux 里rpm包到底是干什么用的啊?
英文原义:RPM Package Manager 中文释义:RPM软件包管理器 注解:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件.与Dpkg类 ...
- linux 下载rpm包到本地,createrepo:创建本地YUM源
如何下载rpm包到本地 设置yum安装时,保留rpm包. 1.编辑 /etc/yum.conf 将keepcache的值设置为1; 这样就可以将yum安装时的rpm包保存在 /var/cache/yu ...
最新文章
- 【深度学习】Dropout与学习率衰减
- java基础之包装类
- [C++11]initializer_lisr模板类的使用
- isnull mysql_mysql isnull用法讲解
- 洛谷-DFS-1019-单词接龙-个人AC题解和公共AC题解笔记
- python程序设计简明教程知识点总结_Python程序设计简明教程 在线阅读
- 利用RC.EXE和RCDLL.DLL创建VB6资源文件
- shx文件怎么导入cad_「设计师必备技能」打开cad图纸缺少shx字体,图纸乱码怎么办?...
- cents7配置gradle4
- C:\WINDOWS\system32\config\systemprofile\Desktop引用了一个不可用的位置
- 【转载】Windows 10 运行 Linux子系统的图形界面程序
- 电子邮件注册网站是什么,163电子邮件注册流程详解
- python软件安装教程-Python-中文版软件安装包以及安装教程
- postgresql修改密码
- 正则表达式、常用的匹配总结
- 大数据分析对电子商务行业有哪些改变?
- Android ROM 打包记录
- 试用多片2K×8的RAM扩展为4K×16的RAM(下面用多片1K×4的RAM扩展为2K×8的RAM代替之, 二者原理相同)(二〇二〇年山东大学数字电路906综合题第1题)(全网第一手资料)
- 数据结构考研复试、工作面试常见问题及答案(动画版)
- H.266代码学习:JEM使用方法