记一次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服务器搭建走过的坑的更多相关文章

  1. FTP服务器搭建及操作(一)

    FTP服务器搭建及操作(一) FTP搭建 PHP FTP操作 搭建方法参照(windows):http://www.cnblogs.com/lidan/archive/2012/06/04/25351 ...

  2. 《Linux下FTP服务器搭建及FTP使用》

    .LOGAndy:mxtd114 <Linux下FTP服务器搭建> 0.root登录 1.安装ftp # yum -y install ftp 2.安装vsftpd # yum -y in ...

  3. ftp服务器搭建及简单操作

    ftp服务器搭建及简单操作 1. 添加一个新用户,使用名useradd testftp,然后使用passwd testftp对新添加的用户设置密码(这里设置为“1234567”). 2. 安装ftp服 ...

  4. Linux CentOS 6.5 下 vsftpd ftp服务器搭建

    Linux CentOS 6.5 下 vsftpd ftp服务器搭建 by:授客 QQ:1033553122   操作系统环境:CentOS 6.5-x86_64 下载地址:http://www.ce ...

  5. FTP-Linux中ftp服务器搭建

    一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...

  6. (转)【Java FTP及FTP服务器搭建】

    转至 http://blog.csdn.net/studyvcmfc/article/details/8147052 目录(?)[+] -[Java FTP及FTP服务器搭建] 一:本文采用apach ...

  7. ftp服务器搭建(windows)+实现ftp图片上传对接

    ftp服务器搭建(windows): vsftpd简介: vsftpd是“very secure FTP daemon”的缩写,是一个完全免费的.开放源代码的ftp服务器软件. 下载地址: http: ...

  8. Linux之匿名FTP服务器搭建

    FTP(File Transfer Protocol)是在服务器与客户端进行文件传输的一种传输协议.本次介绍的是vsftpd的软件体验ftp服务. FTP服务器默认情况下依据用户登录情况分为三种不同的 ...

  9. Linux 之 FTP服务器搭建

    FTP服务器搭建 参考教程:[千峰教育] 1.关闭防火墙: service iptables stop 2.关闭Selinux setenforce 0 3.安装所需要依赖及编译工具 yum inst ...

随机推荐

  1. Winform屏幕截图保存C#代码

    代码如下: using System.Runtime.InteropServices; using System.Drawing.Imaging; [System.Runtime.InteropSer ...

  2. C# 修改电脑DNS和IP方法

    /// <summary> /// 将IP,DNS设置为自动获取 /// </summary> private void setDHCP() { string _doscmd ...

  3. jsp中自定义Taglib案例

    一.使用TagSupport类案例解析 1.自定义Tag使用jdbc连接mysql数据库 1.1定义标签处理器类 package com.able.tag; import java.sql.Conne ...

  4. Python数学运算的一个小算法(求一元二次方程的实根)

    请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:ax² + bx + c = 0的两个解. #!/usr/bin/env python # -*- coding: ...

  5. Java 进程占用 VIRT 虚拟内存超高的问题研究

    1. 现象 最近发现线上机器 java 8 进程的 VIRT 虚拟内存使用达到了 50G+,如下图所示: 2. 不管用的 -Xmx 首先第一想到的当然使用 java 的 -Xmx 去限制堆的使用.但是 ...

  6. Play Framework框架 JPA惯用注解

    Play Framework框架 JPA常用注解 1.@Entity(name=”EntityName”) 必须 ,name 为可选 , 对应数据库中一的个表 2.@Table(name=”" ...

  7. Thread.CurrentPrincipal & HttpContext.Current.User

    据说要这样写才稳妥 // This principal will flow throughout the request.VoyagerPrincipal principal = new Voyage ...

  8. 在Android开发中使用Ant 三:批量打包

    批量打包最常用到的地方是进行产品推广时,为每个渠道打一个包.上一篇随笔中,介绍了怎样进行一次完整的打包,批量打包只要在此基础上做一次循环即可. 在打包之前要做两个准备工作,一个是读取渠道,一个是修改存 ...

  9. iOS多线程技术

    iOS多线程技术主要分配NSThread.NSOperation和GCD.下边来简单的介绍一下吧. 随性一点,就不按照顺序来了.所以先介绍一下NSOperation. ---------------- ...

  10. iOS--UISearchBar和UISearchDisplayController

    UISearchBar继承自UIView.UIResponder.NSObject 属性: autocapitalizationType————自动对输入文本对象进行大小写设置(包含4种类型,但是有时 ...