记一次ftp服务器搭建走过的坑
记一次ftp服务器搭建走过的坑
1、安装
①下载
wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz #要翻墙
②解压
tar xzvf vsftpd-3.0.3.tar.gz cd vsftpd-3.0.3
③编译
根据需要修改builddefs.h文件,
cat builddefs.h
#ifndef VSF_BUILDDEFS_H #define VSF_BUILDDEFS_H #undef VSF_BUILD_TCPWRAPPERS #define VSF_BUILD_PAM #undef VSF_BUILD_SSL #endif
如需要tcp wrapper,改成#define VSF_BUILD_TCPWRAPPERS
如需要OpenSSL,改成#define VSF_BUILD_SSL
建议吧所有的undef改为define,反正也不多,就三四个。
改完直接make即可。
④安装
编译完成后会在当前目录生成vsftpd、vsftpd.8和vsftpd.conf.5。make install会安装到/usr/local目录下
2、踩坑
之所以搭建这个是因为老的ftp一直不稳定,于是去官网下了个最新版。
2.1 编译过程会踩的坑
① 缺少tcp_wrappers-devel包
之所以缺少这个包是因为在一开始的builddefs.h文件中我们修改为了#define VSF_BUILD_TCPWRAPPERS,
② 缺少pam-devel包
同理在一开始的builddefs.h文件中我们修改为了#define VSF_BUILD_PAM
③ 缺少openssl-devel包
同理在一开始的builddefs.h文件中我们修改为了#define VSF_BUILD_SSL
2.2 配置文件的坑
问题发现:
在启动vsftp进程后使用ftp客户端登录可能会遇到这么两个问题,一个是vsftpd:refusing to run with writable root inside chroot(),一个是Failed to change directory,这两个问题归根结底都是配置文件的三个参数导致的,分别是chroot_local_user、chroot_list_enable、chroot_list_file。
知识点:
①chroot_local_user
是否将所有用户限制在主目录,,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
②chroot_list_enable
是否启动限制用户的名单,通俗的说就是chroot_local_user的例外项。
③chroot_list_file
是否限制在主目录下的用户名单,此项只有在chroot_list_enable值为yes才有意义
概念比较乱,可以这样记忆:
当chroot_local_user为yes时,说明全局用户都被锁定在主目录,无法跳转到其他目录,此时chroot_list_enable为yes时,说明允许设置例外用户不被锁定。反之亦然。即当"全部用户被锁定于主目录"时(chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(chroot_local_user=NO),"例外""就是:要被锁定的用户是哪些。
实例:
有user1、user2两个ftp用户,计划让user1锁定在主目录,user2自由切换目录,可以用以下方法实现
方法一:
chroot_local_user=YES
chroot_list_enable=YES
/etc/vsftpd/chroot_list名单列表为:
user2
解释:hroot_local_user=YES将所有用户限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=YES,即全体用户都被“限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“不会被限制在主目录下”的用户。
方法二:
chroot_local_user=NO
chroot_list_enable=YES
/etc/vsftpd/chroot_list名单列表为:
user1
解释:chroot_local_user=NO则所有用户不被限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=NO,即全体用户都“不被限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“会被限制在主目录下”的用户。
问题解决:
Failed to change directory一般就是配置文件chroot_local_user设了YES,而你没有开chroot_list_enable或者chroot_list_file没有写对应用户
vsftpd:refusing to run with writable root inside chroot()
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限或者在vsftpd的配置文件中增加下列项:
allow_writeable_chroot=YES
记一次ftp服务器搭建走过的坑的更多相关文章
- FTP服务器搭建及操作(一)
FTP服务器搭建及操作(一) FTP搭建 PHP FTP操作 搭建方法参照(windows):http://www.cnblogs.com/lidan/archive/2012/06/04/25351 ...
- 《Linux下FTP服务器搭建及FTP使用》
.LOGAndy:mxtd114 <Linux下FTP服务器搭建> 0.root登录 1.安装ftp # yum -y install ftp 2.安装vsftpd # yum -y in ...
- ftp服务器搭建及简单操作
ftp服务器搭建及简单操作 1. 添加一个新用户,使用名useradd testftp,然后使用passwd testftp对新添加的用户设置密码(这里设置为“1234567”). 2. 安装ftp服 ...
- Linux CentOS 6.5 下 vsftpd ftp服务器搭建
Linux CentOS 6.5 下 vsftpd ftp服务器搭建 by:授客 QQ:1033553122 操作系统环境:CentOS 6.5-x86_64 下载地址:http://www.ce ...
- FTP-Linux中ftp服务器搭建
一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...
- (转)【Java FTP及FTP服务器搭建】
转至 http://blog.csdn.net/studyvcmfc/article/details/8147052 目录(?)[+] -[Java FTP及FTP服务器搭建] 一:本文采用apach ...
- ftp服务器搭建(windows)+实现ftp图片上传对接
ftp服务器搭建(windows): vsftpd简介: vsftpd是“very secure FTP daemon”的缩写,是一个完全免费的.开放源代码的ftp服务器软件. 下载地址: http: ...
- Linux之匿名FTP服务器搭建
FTP(File Transfer Protocol)是在服务器与客户端进行文件传输的一种传输协议.本次介绍的是vsftpd的软件体验ftp服务. FTP服务器默认情况下依据用户登录情况分为三种不同的 ...
- Linux 之 FTP服务器搭建
FTP服务器搭建 参考教程:[千峰教育] 1.关闭防火墙: service iptables stop 2.关闭Selinux setenforce 0 3.安装所需要依赖及编译工具 yum inst ...
随机推荐
- Winform屏幕截图保存C#代码
代码如下: using System.Runtime.InteropServices; using System.Drawing.Imaging; [System.Runtime.InteropSer ...
- C# 修改电脑DNS和IP方法
/// <summary> /// 将IP,DNS设置为自动获取 /// </summary> private void setDHCP() { string _doscmd ...
- jsp中自定义Taglib案例
一.使用TagSupport类案例解析 1.自定义Tag使用jdbc连接mysql数据库 1.1定义标签处理器类 package com.able.tag; import java.sql.Conne ...
- Python数学运算的一个小算法(求一元二次方程的实根)
请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:ax² + bx + c = 0的两个解. #!/usr/bin/env python # -*- coding: ...
- Java 进程占用 VIRT 虚拟内存超高的问题研究
1. 现象 最近发现线上机器 java 8 进程的 VIRT 虚拟内存使用达到了 50G+,如下图所示: 2. 不管用的 -Xmx 首先第一想到的当然使用 java 的 -Xmx 去限制堆的使用.但是 ...
- Play Framework框架 JPA惯用注解
Play Framework框架 JPA常用注解 1.@Entity(name=”EntityName”) 必须 ,name 为可选 , 对应数据库中一的个表 2.@Table(name=”" ...
- Thread.CurrentPrincipal & HttpContext.Current.User
据说要这样写才稳妥 // This principal will flow throughout the request.VoyagerPrincipal principal = new Voyage ...
- 在Android开发中使用Ant 三:批量打包
批量打包最常用到的地方是进行产品推广时,为每个渠道打一个包.上一篇随笔中,介绍了怎样进行一次完整的打包,批量打包只要在此基础上做一次循环即可. 在打包之前要做两个准备工作,一个是读取渠道,一个是修改存 ...
- iOS多线程技术
iOS多线程技术主要分配NSThread.NSOperation和GCD.下边来简单的介绍一下吧. 随性一点,就不按照顺序来了.所以先介绍一下NSOperation. ---------------- ...
- iOS--UISearchBar和UISearchDisplayController
UISearchBar继承自UIView.UIResponder.NSObject 属性: autocapitalizationType————自动对输入文本对象进行大小写设置(包含4种类型,但是有时 ...