记一次linux上的ftp搭建过程
最近公司测试环境需要搭建ftp,正好自己稍微有点空且这方面确实不会,就自告奋勇说让我先试试,玩炸了你们再帮忙重装系统重新搭吧(手动滑稽),虽然最终是完成了,但是中间磕磕碰碰遇到一些小问题,到处查百度,最终得以解决,感觉有必要还是记录一下,以后自己再次搭建时候还可以参考(主要是另一个测试环境也是这样搭建了一遍,结果现在搭的时候又遇到各种问题,感觉有记录的必要)
第一步:
输入命令:rpm -qa |grep vsftpd,用于查看是否已经安装vsftpd,如果没有任何输出,则说明没有安装。
第二步:
如果没有安装,输入命令:yum -y install vsftpd,进行直接安装
PS:有些情况下该命令会报错,比如没连外网的情况下,该命令执行不了,具体如何解决还是得百度,这个暂时没遇到,但是好像挺麻烦的,好像要弄什么挂载镜像当源用啥的。
第三步:
添加ftp用户账号,命令如下:
useradd -d /home/ftptest ftptest //创建用户ftptest,其主目录为/home/ftptest
passwd ftptest //为用户ftptest设置密码,输入完该命令后会让你输两遍密码
usermod -s /sbin/nologin ftptest //设定该用户仅能用于ftp
usermod -d /home/ftptest //更改用户主目录为/home/ftptest,如果创建时候目录没指定错,就不需要这个命令了
PS:当时我请教的人,他说那个专门搞服务器的朱工说这样用useradd建立的用户不安全,应该弄一个只能用于ftp无法登陆服务器的账号,具体咋弄我和他也不清楚,反正先这样建着测试环境够用了
第四步:
修改相关配置文件,位置在/etc/vsftpd/vsftpd.conf,我的配置具体内容如下,注意我 // 注释只是为了方便这里看,实际上linux那边这样是不认的
anonymous_enable=NO //允许匿名访问
local_enable=YES //允许本地用户访问
write_enable=YES //允许写入,修改权限
local_umask=022 //本地用户文件上传后的权限是-rw-r--r,本地用户上传最高权限为666,默认权限为666-022=644,即local_umask=022
dirmessage_enable=YES //是否显示目录说明文件, 默认是YES
xferlog_enable=YES //如果启用该选项,系统将会维护记录服务器上传和下载情况的日志文件。默认情况下,该日志文件为 /var/log/vsftpd.log。但也可以通过配置文件中的 vsftpd_log_file 选项来指定其他文件。默认值为NO
connect_from_port_20=YES //确保ftp-datad 数据传送使用port 20(20号端口)
xferlog_std_format=YES //如果启用该选项,传输日志文件将以标准 xferlog 的格式书写,该格式的日志文件默认为 /var/log/xferlog,也可以通过 xferlog_file 选项对其进行设定。默认值为NO
chroot_local_user=YES //是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
chroot_list_enable=NO //是否启动限制用户的名单 YES为启用 NO禁用(包括注释掉也为禁用)
chroot_list_file=/etc/vsftpd/chroot_list //否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,当其为yes时,该文件为排除名单,为no时,该文件为限制名单
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES //为yes时, /etc/vsftpd/user__list文件中的用户将不能访问vsftpd服务器
userlist_deny=NO //默认没有这一项,与下面这条参数:userlist_file=/etc/vsftpd/localuser_list 结合使用。
userlist_file=/etc/vsftpd/user_list //默认没有这一项,uerlist_deny为YES时,这里面的用户则不能登录,当为NO时,这里面的用户可以登录,和/etc/vsftpd/user_list是一个意思
tcp_wrappers=YES //大概意思是是否用防火墙过滤一些请求,一种控制主机访问的安全工具
allow_writeable_chroot=YES //只能访问自身所属目录
pasv_enable=Yes //启用被动模式
pasv_max_port=10100 //被动模式下最高端口
pasv_min_port=10090 //被动模式下最低端口
第五步:
启动或重启ftp服务(如果之前已经启动了的话)
启动命令:service vsftpd start
重启命令:service vsftpd restart
PS:好像不同版本的linux,启动重启ftp的命令不同?百度资料时候似乎有看到过这说法
第六步:
不出意外,此时会感觉已经大功告成了,没错,ftp本身应该是已经完事了,但是防火墙的21端口还没开出去,客户端连接时候应该是一直连不上。
开放端口:firewall-cmd --permanent --zone=public --add-port=21/tcp
重启防火墙:firewall-cmd --reload
第七步:
此时此刻好像真的完成了,21开放,客户端能请求并输入账号密码了,但是会发现登陆是成功了,却经常报如下错误:
200 port command successful. consider using pasv 425 failed to establish connection
百度上有说是什么客户端防火墙问题的,有说是selinux要关掉的,有说是ftp用户权限没设置好的,有说是用户主目录没建的
以上可能性不能说没有,但是我这边经确认问题在于被动模式的端口没开放
开放端口:firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
PS:注意这个10090-10100请配合上面那个配置文件使用,另外请别忘记还得重启防火墙。
第八步:
感觉这下是真的完成了,此时用工具连接,会发现登陆正常,也没报错,然而真是这样么,不,你不是,你没有,别瞎说啊(手动滑稽),你会发现目录是空白一片,上传文件也是失败,
仔细看提示框,会发现如下提示:
226 Transfer done (but failed to open directory).
此时,先执行setstatus -v ,会得到如下结果
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
或者直接输入getenforce,会得到结果enforcing或者permissive。
如果发现结果是enforcing,说明此时你是被selinux给拦住了。
此时执行一句setenforce 0即可。
PS:实际上这个操作还是把selinux给关了,也可以采用改配置文件再重启的方式去关闭,只是这样不需要重启而已。其实我是很不想去把这玩意关掉的,根据百度各种说明,好像这是个什么很流弊的安全方面的东西。。但是实在搞不定,只好这样了。
最后:
此时此刻,才是真的完事了,打开ftp工具,连接,上传下载,一气呵成。之所以这次要记录,主要是也是为了记第六七八的这三步,百分之80的时间都耗费在这里了(如果yum用不了的话。。我估计那里也会耗费大量时间)
记一次linux上的ftp搭建过程的更多相关文章
- linux上构建ftp服务器
linux上构建ftp服务器 服务器搭建 https://help.aliyun.com/knowledge_detail/60152.html,可以参考这篇博文. 配置文件详解 进入/etc/vsf ...
- Linux上的ftp服务器vsftpd之配置满天飞--设置匿名用户访问(不弹出用户名密码框)以及其他用户可正常上传
一.问题背景 没事谁折腾这鬼玩意哦...还不是因为bug. 我们的应用,用户头像是存在ftp上的.之前的ftp服务器是一台windows,我们后台服务器程序收到用户上传头像的请求时,会用一个ROOT/ ...
- 在Linux上用Apache搭建Git服务器
在Linux上用Apache搭建Git服务器 最近在学Linux,终于在Linux上用Apache搭建起了Git服务器,在此记录一下. 服务器:阿里云服务器 Linux版本:CentOS 6.5 ...
- 记一次Linux系统被入侵的过程
记一次Linux系统被入侵的过程 1. 前期现象 前期现象,宋组那边反应开发环境192.161.14.98这台机器通过公网下载文件,很慢,ping百度丢包严重.因为这台机器是通过楼下adsl拨号上网, ...
- JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!)
JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!) 1.文件准备: 服务器:CentOS Linux release 7.3.1611 (Core) Apa ...
- 【数据库开发】在Windows上和Linux上配置MySQL的过程
[数据库开发]在Windows上和Linux上配置MySQL的过程 标签(空格分隔): [编程开发] 首先是在Windows上尝试用QT进行MySQL数据库开发,结果总出现driver不能load的错 ...
- linux上nginx+apache 搭建 svn服务器
众所周知,nginx目前是不支持svn的,并且由于机房网络只开了80和22(ssh)端口,所以这时候就没法单独在服务器上搭建apache+svn .所以就产生了 nginx + apache + sv ...
- JDK 在 Linux 上安装的详细过程
1.下载JDK Linux上一般会安装Open JDK,如果有系统预装了OpenJDK的话需要先卸载掉OpenJDK, 卸载过程可以参考这里:https://www.cnblogs.com/sxdcg ...
- Linux上rpm实战搭建FTP服务器
1.检测是否已安装FTP服务 # rpm -qa|grep vsftpd 2.未安装ftp服务的前提进行使用rpm安装 # yum install vsftpd -y Loaded plugins: ...
随机推荐
- 接口自动化测试持续集成--Soapui接口功能测试参数化
按照自动化测试分层实现的原理,每一层的脚本实现都要进行参数化,自动化的目标就是要实现脚本代码与测试数据分离. 当测试数据进行调整的时候不会对脚本的实现带来震荡,从而提高脚本的稳定性与灵活度,降低脚本的 ...
- web自动化测试python+selenium学习总结----selenium安装、浏览器驱动下载
一.安装selenium 命令安装selenium库 :pip install -U selenium 查看selenium是否安装成功:pip list PS:有时会有异常,安装失败,可以尝试去s ...
- <转载>XML操作
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- 记录心得-FastJson分层解析demo示例
记录一下,平时用到,可速查!关键: // startArray(); 开始解析数组 // endArray(); 结束解析数组 // startObject(); 开始解析键值对 // endObje ...
- 关于Java多线程的线程同步和线程通信的一些小问题(顺便分享几篇高质量的博文)
Java多线程的线程同步和线程通信的一些小问题(顺便分享几篇质量高的博文) 前言:在学习多线程时,遇到了一些问题,这里我将这些问题都分享出来,同时也分享了几篇其他博客主的博客,并且将我个人的理解也分享 ...
- Mysql 聚合函数返回NULL
[1]聚合函数返回NULL 当where条件不满足时,聚合函数sum().avg()的返回值为NULL. (1)源数据表 (2)如下SQL语句 SELECT sClass, COUNT(*) AS t ...
- 利用airbase-ng建立Soft AP
利用airbase-ng建立Soft AP,再利用一些常见工具进行嗅探,或对抓包进行分析是出现比较早的一种MITM攻击方法.网上有很多关于手动实现的文章,也有一些自动实现脚本.这些脚本通常分两类,一类 ...
- 让网站永久拥有HTTPS - 申请免费SSL证书并自动续期 Let’s Encrypt
让网站永久拥有HTTPS - 申请免费SSL证书并自动续期 Let’s Encrypt 为什么要用HTTPS 网站没有使用HTTPS的时候,浏览器一般会报不安全,而且在别人访问这个网站的时候,很有可 ...
- php 版本升高后 会出现 之Deprecated: Function ereg_replace() is deprecated的解决方法
这个问题是因为php版本过高. 在php5.3中,正则函数ereg_replace已经废弃,而dedecms还继续用.有两个方案可以解决以上问题: 1.把php版本换到v5.3下. 2.继续使用v5. ...
- redis使用总结(二)(jedis使用)
Jedis使用(Jedis中的API和redis的指令基本相同) 1.创建maven工程,在pom文件中导入jedis的坐标 <dependency> <groupId>red ...