记一次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: ...
随机推荐
- mac下mysql安装及配置启动
---恢复内容开始--- 原始链接:https://segmentfault.com/q/1010000000475470 按照如下方法成功安装并启动: mysql.server start//启动服 ...
- asp.net 去掉小数点后面多余的0
很多时候,比如gridview内,不想现实从数据库带出的多余小数 ,比如 4.01000. 那就可以做一个函数: /// <summary> /// 去掉小数点后多余的0, 0本身显示为0 ...
- supervisor 从安装到使用
(转)https://www.jianshu.com/p/3658c963d28b 一.安装 源码安装 先下载最新的supervisor安装包:https://pypi.python.org/pypi ...
- python交互的几种方式
# 第一种交互方式 name = input("name:")age = input("age:")job = input("job:")s ...
- 2018-2019-2 20165316 『网络对抗技术』Exp3:免杀原理与实践
2018-2019-2 20165316 『网络对抗技术』Exp3:免杀原理与实践 一 免杀原理与实践说明 (一).实验说明 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件, ...
- WdatePicker 日期区间设置
<input id="billsStartDate" name="billsStartDate" onclick="WdatePicker({d ...
- 关于linux系统CPU篇--->不容易发现的占用CPU较高进程
1.系统的CPU使用率,不仅包括进程用户态和内核态的运行,还包括中断处理,等待IO以及内核线程等等.所以,当你发现系统的CPU使用率很高的时候,不一定能找到相对应的高CPU使用率的进程 2.案例分析, ...
- mysql8操作命令(持续更新)
mysql服务管理 查看服务状态 systemctl status mysqld.service 启动服务 systemctl start mysqld.service 关闭服务 systemctl ...
- Java笔记 #07# Hibernate Validator
Hibernate Validator是Spring Boot默认附带的标准校验API(javax.validation)实现. 应用实例(配合切面) 采用注解定义切面.java @Aspect @C ...
- sdoi2018旧试题 证明