博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次ftp服务器搭建走过的坑
阅读量:5251 次
发布时间:2019-06-14

本文共 2434 字,大约阅读时间需要 8 分钟。

记一次ftp服务器搭建走过的坑

1、安装

①下载

wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz #要FQ
②解压
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=YESchroot_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=NOchroot_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

转载于:https://www.cnblogs.com/weijing24/p/6116077.html

你可能感兴趣的文章
c++||template
查看>>
条件断点 符号断点
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
Java基础教程——网络基础知识
查看>>
Kruskal基础最小生成树
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
What's New for Visual C# 6.0
查看>>
ExtJs学习笔记之ComboBox组件
查看>>
关于收费软件
查看>>
javascript之Style物
查看>>
图的深度优先遍历
查看>>
C# 之 提高WebService性能大数据量网络传输处理
查看>>
[bzoj1004] [HNOI2008] Cards
查看>>
原生HttpClient详细使用示例
查看>>