CentOS下源码安装vsftpd-3.0.0,并设置指定用户访问指定目录(附带完整配置文件)
1.卸载系统已经存在的ftp服务器
因为是源码安装,所以不能通过rpm -qa的方式查看是否已经安装ftp服务器,可以通过find / | grep vsftp*方式查看系统中存在哪些与vsftpd相关的文件,找出来通过rm删除。
以下删除代码为参考:
rm /usr/local/sbin/vsftpd
rm /usr/local/man/man5/vsftpd.conf.
rm /usr/local/man/man8/vsftpd.
rm /etc/xinetd.d/vsftpd
rm -rf /etc/vsftpd
2.解压源码包
tar -zxvf vsftpd-3.0..tar.gz
编码解决:
vi opts.c
将if (str_equal_text(&p_sess->ftp_arg_str,"UTF8 ON"))
更改成if (str_equal_text(&p_sess->ftp_arg_str,"DISABLE UTF8 ON"))
注意:安装之前,先查看系统是否为64位(用getconf LONG_BIT命令),需要更改vsf_findlibs.sh文件库中lib 路径,命令如下:
sed -i 's/lib\//lib64\//g' vsf_findlibs.sh
3.安装
完成以上步骤,到解压目录
3.1 查看系统版本,确定合适版本的ftp压缩包
cat /etc/issue
或
cat /etc/redhat-release
(Linux查看版本当前操作系统发行版信息)
CentOS Linux release 7.1.1503 (Core)
tar -zxvf vsftpd-3.0..tar.gz
3.2 查看系统是32位还是64位的
getconf LONG_BIT
“o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o sslslave.o ptracesandbox.o ftppolicy.o sysutil.o sysdeputil.o seccompsandbox.o -Wl,-s -fPIE -pie -Wl,-z,relro -Wl,-z,now `./vsf_findlibs.sh`/usr/bin/ld: cannot find -lcapcollect2: ld 返回 1make: *** [vsftpd] 错误 1”
3.3 编译与安装
cp vsftpd.conf /etc/vsftpd
cp Redhat/vsftpd.pam /etc/pam.d/
mv /etc/pam.d/vsftpd.pam /etc/pam.d/vsftpd
3.4 添加用户并指定目录
添加用户ftp123,并指定用户家目录/data/ftp_dir
useradd -d /data/ftp_dir/ ftp123
passwd ftp123
3.5 修改目录权限
chmod /data/ftp_dir/
ll
3.6 修改配置文件/etc/vsftpd/vsftpd.conf
3.7 修改防火墙,并重启
vi /etc/sysconfig/iptables/
-A OUTPUT -p tcp --sport -j ACCEPT
-A OUTPUT -p tcp --sport -j ACCEPT
-A OUTPUT -p tcp --sport -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport -j ACCEPT
再重启
/usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf
4.验证
yum install ftp
4.2.2 登陆
ftp ip地址

出现以上提示表示登陆成功了
ftp> put
(local-file) index.html
(remote-file) index.html
local: index.html remote: index.html
Entering Passive Mode (,,,,,).
Ok to send data.
Transfer complete.
bytes sent in 0.00856 secs (278.25 Kbytes/sec)
下面看一个完整操作
5.安装常见问题
5.1 530 Login incorrect
解决思路:修改vsftpd.conf配置文件,添加pam_service_name=vsftpd配置,注意这里的配置文件值为:vsftpd,对应的是/etc/pam.d/vsftpd文件,所以复制到pam.d目录的vsftpd.pam需要进行改名;重启ftp验证。
如果还不能解决,可以考虑编辑vi /etc/pam.d/vsftpd,将文件中的所以lib替换为lib64,再重启ftp即可。
5.2 500 illegal port command
解决思路:出现这个问题时,可以考虑vsftpd连接模式问题,vsftpd存在两种连接模式,一个是主动连接,一个是被动连接。首先将ftp客户端的连接方式改为“被动连接”模式再进行ftp的连接。
如果还不行,可以考虑是不是服务器端口问题,比如服务器限制了只能访问几个端口,这是需要在配置文件中进行如下配置:
pasv_enable=YES //表示启动被动模式
pasv_min_port=9090 //被动模式最小端口
pasv_max_port=9091 //被动模式最大端口
pasv_address=172.16.4.160 //被动模式连接IP
注意pasv_address这个配置,这个配置默认为none,不进行设置,则客户端在连接的时候会先连接当前服务器内网IP地址,之后才连接外网IP地址,所以进行配置的时候,要指定地址,这样再连接的时候才会直接连接外网地址。
5.3 500 OOPS: cannot change directory:/home/xxxx
解决思路:遇到这个问题可以考虑是否是服务器的selinux防火墙开启了,可以通过一下命令进行防火墙关闭:setsebool -P ftpd_disable_trans 1,需要重启ftp,service vsftpd restart
还可以通过命令:sestatus -b | grep ftp查看ftp的状态,最主要查看ftp_home_dir的值是on 还是off,如果是off,通过命令setsebool -P ftp_home_dir on设置为on
5.4 530 Permission denied
解决思路:遇到这个问题可以考虑是否配置userlist_enable选项,查看/etc/vsftpd.user_list或者/etc/vsftpd/vsftpd.user_list是否限制了当前用户,将该用户从文件中删除或者设置userlist_deny=NO
5.5 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
解决思路:这是因为从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以在vsftpd的配置文件/etc/vsftpd/vsftpd.conf添加一行“allow_writeable_chroot=YES”
5.6 500 Illegal PORT command.
状态: 正在连接 218.65.241.60:12021...状态: 连接建立,等待欢迎消息...状态: 不安全的服务器,不支持 FTP over TLS。状态: 已登录状态: 读取目录列表...命令: PWD响应: 257 "/lutong/tomcat_admin_9090/webapps/boss_sync_user_data"命令: TYPE I响应: 200 Switching to Binary mode.命令: PORT 172,16,4,200,201,1响应: 500 Illegal PORT command.命令: PASV响应: 227 Entering Passive Mode (90,114,3,18,8,52).命令: LIST错误: 无法建立数据连接: ETIMEDOUT - 连接尝试超时错误: 50 秒后无活动,连接超时
用FileZilla工具连接时,发现,报如上错误,这是因为没有指定被动模式,在/etc/vsftpd/vsftpd.conf最后添加如下几行,
#是否允许被动模式
pasv_enable=YES
#下面两行设置被动模式连接时的端口范围,建议配置大一点的,安全性高
pasv_max_port=
pasv_min_port=
pasv_address=ftp服务器ip #vsftp服务器指定IP地址
然后在/etc/sysconfig/iptables添加开放端端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport : -j ACCEPT
即可
5.7 421 Timeout.
修改/etc/vsftpd/vsftpd.comf的data_connection_timeout的值更大即可
6.配置文件
/etc/vsftpd/vsftpd.conf
#禁止匿名访问
anonymous_enable=NO
#开放本地用户的写权限
write_enable=YES
#设置本地用户的文件生成掩码为022,默认值为077
local_umask=
#当切换到目录时,显示该目录下的.message隐含文件的内容
#这是由于默认情况下有message_file=.message的 设置
dirmessage_enable=YES
#激活上传和下载日志
xferlog_enable=YES
#启用FTP数据端口的连接请求
connect_from_port_20=YES
#xferlog日志文件
xferlog_file=/var/log/xferlog
#使用标准的ftpd xferlog日志格式
xferlog_std_format=YES
#设置空闲的数据连接的的中断时间
data_connection_timeout=
#设置连接服务器后的欢迎信息
ftpd_banner=Welcome to KJGG FTP service. #下面四句配置保证只有/etc/vsftpd/user_list 的用户可以登陆
local_enable=YES #允许本地用户登录
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
userlist_enable=YES
#下面两句配置保证只有/etc/vsftpd/chroot_list的用户切换目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list_file
#设置PAM认证服务的配置文件名称,该文件存放 在/etc/pam.d/目录下
#pam_service_name=vsftpd
#tcp_wrappers=YES
#开启监听
listen=YES
#命令通道端口,默认21
listen_port= #是否允许被动模式
pasv_enable=YES
#下面两行设置被动模式连接时的端口范围,建议配置大一点的,安全性高
pasv_max_port=
pasv_min_port=
#vsftp服务器指定IP地址
pasv_address=ftp服务器ip #这是因为从2..5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!
#如果检查发现还有写权限,就会报该错误。要修复这个错误,需要添加下面一行
allow_writeable_chroot=YES
/etc/vsftpd/chroot_list_file
ftp123
/etc/vsftpd/chroot_list_file
ftp123
/etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
7.其他
/usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &
CentOS下源码安装vsftpd-3.0.0,并设置指定用户访问指定目录(附带完整配置文件)的更多相关文章
- CentOS下源码安装Apache2.4+PHP5.4+MySQL5.5
一.准备(把所有的源文件放在‘/home/yuanjun’目录下) apr http://mirror.bjtu.edu.cn/apache/apr/apr-1.4.6.tar.gz apr-util ...
- 在 CentOS 下源码安装 Xen
http://www.vpsee.com/2010/04/install-xen-on-centos-from-source/ 在 CentOS 源码编译安装 Xen 的过程和在 Debian 上编译 ...
- Centos下源码安装git
1.centos下git版本太久了,才1.8几,而官方更新的还是很活跃的,于是我就想源码安装一个新版本. 2.首先到: https://github.com/git/git/releases 下载最新 ...
- CentOS 下源码安装LAMP环境
一.简介 什么是LAMP LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代 ...
- CentOS下源码安装MySQL
一.创建mysql用户与组,相关目录 useradd mysql -s /sbin/nologin mkdir /usr/local/mysql chown -R mysql.mysql mkdir ...
- 在CentOS下源码安装 Xen并搭建Windows虚拟机
前言 首先要感谢xing的帮助,在他的指导之下才完成环境的搭建,本文档的部分内容来自他的文档.另外,还要感谢——互联网. 1. 环境介绍 Linux: CentOS 6.3 Xen: Xe ...
- CentOS下源码安装mplayer播放器
http://www.mplayerhq.hu/MPlayer/releases/ [root@ok MPlayer-1.2.1]# pwd /root/MPlayer-1.2.1 http://ww ...
- centos 6x系统下源码安装mysql操作记录
在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配.可以通过源 ...
- CentOS 7下源码安装MySQL 5.7
网上说linux安装mysql服务分两种安装方法: ①源码安装,优点是安装包比较小,只有几十M左右,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: ②使用官方编译好的二进制文件安装,优点 ...
随机推荐
- 基于HTML5 Canvas实现用户交互
很多人都有这样的疑问,基于HTML5 Canvas实现的元素怎么和用户进行交互?在这里我们用到HT for Web(http://www.hightopo.com/guide/guide/core/b ...
- 双击更新所有已安装的python模块
首先声明我是一个升级控.几乎每天会查看一下手机.电脑是否有新的应用需要更新. 同样,我的python模块也是这样.百度了一下,发现目前还没有人将更新所有模块做成一件命令,但是查到了指引,主要就是两个 ...
- redis入门指南-附录B
- 开涛spring3(4.4) - 资源 之 4.4 Resource通配符路径
4.4.1 使用路径通配符加载Resource 前面介绍的资源路径都是非常简单的一个路径匹配一个资源,Spring还提供了一种更强大的Ant模式通配符匹配,从能一个路径匹配一批资源. Ant路径通配 ...
- java虚拟机学习-JVM调优总结-垃圾回收面临的问题(8)
如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断.垃圾回收程序收集计数为0的对象即可.但是这种方法无法解决循环引用.所以,后来实现的垃圾判断算法中,都是从程序运行 ...
- iOS学习之应用之间的操作(转发)
首先要说的是每一个APP都可以设置一个自己独有的URL,APP应用之间的操作就是通过这个URL来实现的! 1.如何配置自己应用的URL? 关于自己的URL,作为资深的程序猿都会想到 Info.plis ...
- .net开源权限管理系统
有业务请加QQ 245747009 源码地址:http://git.oschina.net/sunzewei/EIP 一.更新记录1.更新日期:2017-02-24 00:00:002.更新内容: 版 ...
- 正则表达式入门案例C#
---恢复内容开始--- 在网上百度了好多关于正则表达式的,不过好多都是关于语法的,没有一个具体的案例,有点让人难以入门,毕竟我还是喜欢由具体到抽象的认识.所以我就在这先提供了一个入门小案例(学了了6 ...
- javascript痛点之一变量作用域
1.用var声明的变量是有作用域的,比如我们在函数中用var声明一个变量 1 'use strict'; 2 function num(){ 3 //用var声明一个变量num1 4 var num1 ...
- Vue单页式应用(Hash模式下)实现微信分享
前端微信分享的基本步骤: 一.绑定域名: 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名".这个不多说,微信开发 ...