记一次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: ...
随机推荐
- 1、写在开头的话——Tinking in Java 绪论之我见
新兵道歉!版式不懂,技术若有错误,请指正,或发我邮箱1300431700@qq.com 不胜感激! 本文力图通过文章总结的形式,阐述自己的观点,迫使自己思考书中精髓,即使跟技术无关! 正文开始! “上 ...
- C#中方法、类等的默认访问修饰符~
C# 方法默认访问级别 : private C# 类默认访问级别 : internal 1.命名空间下的元素的默认访问修饰符 public : 同一程序集的其他任何代码或引用该程序集的其他程序集都可以 ...
- CentOS 7 配置DHCP中继代理服务
DHCP服务器只作用于局域网同一网段内,客户端是通过广播消息来获得DHCP服务器响应后才能得到IP地址的,但广播消息不能跨越子网,那么如何让客户端获取到DHCP服务器提供的IP地址呢?这就是DHCP中 ...
- SuperSocket基础二
SuperSocket基础(二)-----一个完整的SocketServer项目 由于时间关系未能及时更新,关于SuperSocket,对于初学者而言,一个SuperSock的Server真的不好写. ...
- work-7.2
安装ubuntu,jdk ,git,maven,Intellij. 配置GIT时,需要将在本地生成的公钥粘贴到服务端. 先占个座,具体过程待补充. -------------------------- ...
- cocos dos命令
- 使用4K分辨率,然后放大DIP200%,软件界面异常.
简单:WFM主界面.AutoScaleMode 选中DIP,然后使用表格容器,容器分割,容器.就可以快速迁移旧程序. 复杂点:读取桌面分辨率,DIP放大....
- Recycle----项目总结
github项目地址:https://github.com/HuChengLing/recycle 软件规模: 我们这个Recycle app属于一个小型项目,整体规模不大.预期有垃圾回收和二手品交易 ...
- dotnetcore ef 调用多个数据库时用户命令执行操作报错
dotnetcore ef 调用多个数据库时用户命令执行操作报错 1.多个DbContext 时报错: 报错: More than one DbContext was found. Specify w ...
- PHP的openssl加密
PHP的openssl扩展 openssl扩展使用openssl加密扩展包,封装了多个用于加密解密相关的PHP函数,极大地方便了对数据的加密解密. 常用的函数有: 对称加密相关: string ope ...