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左右,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: ②使用官方编译好的二进制文件安装,优点 ...
随机推荐
- struts2.3.23升级到struts2.3.32
新的漏洞 3月8号去审计厅培训系统的使用,那边计算机中心的负责人递过来一张如下图所示的文档,意思是发现了struts2的漏洞,需要进行修复. 在培训前,我登录到服务器中,看到了项目中,所有的服务器中应 ...
- 一次基于Vue.Js用户体验的优化
.mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...
- Spring-bean作用域scope详解
Spring Framework支持五种作用域(其中有三种只能用在基于web的Spring ApplicationContext). singleton 在每个Spring IoC容器中一个bean定 ...
- R语言快速深度学习进行回归预测(转)
深度学习在过去几年,由于卷积神经网络的特征提取能力让这个算法又火了一下,其实在很多年以前早就有所出现,但是由于深度学习的计算复杂度问题,一直没有被广泛应用. 一般的,卷积层的计算形式为: 其中.x分别 ...
- id 生成器介绍
背景介绍 在一般的业务场景中, 初始的时候简单的自增数(比如MySQL 自增键)就可以很好的满足需求, 不过随着业务的发展和驱动, 尤其是在分布式的场景中, 如何生成全局的唯一 id 便成了需要慎重考 ...
- php 二级级联菜单
找了很多个级联的菜单,都不好用,自己弄个简单点的,共享下,希望有朋友用得着 <?php //建立表country,有三个字段Id,parentId,area. $pro = $_POST['pr ...
- JavaScript中对事件简单的理解(1)
事件(event) 1.什么是JavaScript事件? 事件是文档或浏览器中发生的特定交互瞬间. 2.事件流 事件流描述的是从页面中接受事件的顺序,包含IE提出的事件冒泡流与Netscape提出的事 ...
- .Net开发的两个小技巧
一.@符号的妙用 1.可以作为保留关键字的标识符 C#规范当中,不允许使用保留关键字(class.bool等)当作普通的标识符来命名,这时候@符号作用就体现 出来了,可以通过@符号前缀把这些保留关键字 ...
- EF Core学习Code First
下面通过实例来学习EF Core Code First,也就是通过EF Core迁移来完成从模型生成数据库. 本实例使用EntityFrameworkCore SQLite 数据库进行介绍,大家也可以 ...
- JQuery源码阅读记录
新建html文件,在浏览器中打开文件,在控制台输入consoole.log(window);新建html文件,引入JQuery后在浏览器中打开,在控制台同样输入consoole.log(window) ...