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左右,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: ②使用官方编译好的二进制文件安装,优点 ...
随机推荐
- php中for循环的应用1
for 循环是 PHP 中最复杂的循环结构.它的行为和 C 语言的相似.在PHP中使用的是执行相同的代码集的次数. for 循环的语法是: for (expr1; expr2; expr3)state ...
- Linux_shell 学习
shell中test的运用 test 命令是用于检查某个条件是否成立,他可以进行数值.符号.文件三个方面的测试 1.数值中的运用 -eq 等于 -ne 不等于 -gt 大于 -ge 大于等于 -lt ...
- 《安卓网络编程》之第五篇 WebView的使用
Android提供了WebView组件,,在Android的所有组件中,WebView的功能是最强大的,是当之无愧的老大.WebView组件本身就是一个浏览器实现,她的内核是基于开源WebKit引擎. ...
- 002---第一个Hibernate示例
Hibernate压缩文件结构 下载Hibernate压缩文档,下面为文件结构: Hibernate3.jar:为Hibernate的核心jar包: build.xml:重新打包配置文件 build. ...
- 配置Nginx作为web server详解
keepalived+nginx:实现高可用 corosync+ngin Nginx: 轻量级的反向代理 web服务器 处理静态文件,索引文件以及自动索引,打开文件描述缓存 使用缓存加速反向代理,简单 ...
- Java常用集合体系以及相互区别
Collection集合特点: 1.2.1一些 collection 允许有重复的元素,而另一些则不允许 1.2.2一些 collection 是有序的,而另一些则是无序的 [有序是指与添加的顺序一致 ...
- 实现UDP高效接收/响应
环境Linux g++6.3.0 问题一:一个ip地址如何接收高并发请求 问题二:如何高并发响应消息 发送请求端只能通过ip地址+端口号向服务器发送请求码,所以服务器只能用一个UDP去绑定此ip以及端 ...
- jquery不兼容input的change事件处理
因为客户使用系统一般都是用IE版本的浏览器,所以每次在chrome下调试之后都要在IE走一遍; 这次准备在选择开始时间或者结束时间之后在下方能及时给出对应的天数,但是在IE8下试了change时间根本 ...
- orcle :Could not initialize "D:\app\Administrator\product\11.2.0\dbhome_1\bin\oci.dll" Make sure you have the 32 bits Oracle Client installed.
服务器重启后,数据库登录信息为空 错误信息: ---------------------------(Not logged on) - PL/SQL Developer---------------- ...
- 利用canvas压缩图片
现在手机拍的照片动不动就是几M,当用户上传手机里的照片时一个消耗流量大,一个上传时间长,为了解决这个问题,就需要压缩图片: 想法:利用canvas重绘图片,保持宽高比不变,具体宽高根本具体情况而定. ...