tar包安装vsftpd_vsftpd下载tar.gz-程序员宅基地

技术标签: Linux  tar  vsftpd  

由于之前使用的vsftpd版本是vsftpd-2.2.2-24.el6.x86_64,被扫描出来存在安全漏洞,需要进行版本升级,查看服务器的系统信息:

cat /etc/issue

或者

cat /etc/redhat-release

或者

head -n 1 /etc/issue

是centos6.5,在http://rpmfind.net/查找vsftpd的rpm包,发现只有CentOS 7.5.1804 for x86_64的安装包,如果使用这个安装包需要升级glibc库版本至2.14、2.15,不想做这个操作,因此打算使用tar包的方式编译安装3.0.0版本的vsftpd。

1、首先停止正在启动的vsftpd服务,并卸载软件

service vsftpd stop

#查看已安装的版本

rpm –qa|grep vsftpd

#删除已安装的版本

rpm –e vsftpd-2.2.2-24.el6.x86_64

可以看到已经查询不到安装的vsftpd软件了,并将vsftpd.conf进行了备份。

2、先将下载的vsftpd-3.0.2.tar.gz包上传至服务器然后解压缩至目标目录

tar –zxvf vsftpd-3.0.2.tar.gz

然后进入目录vsftpd-3.0.2:cd vsftpd-3.0.2

3、进行编译安装前的准备工作

1)添加nobody用户

useradd nobody

一般情况下是已经存在了,可以通过vim /etc/pass文件确认

2)创建/usr/share/empty目录

mkdir /usr/share/empty

如果存在了就不需要创建

3)创建匿名用户登录的目录

mkdir /var/ftp

如果已存在就不需要创建

4)创建ftp用户并指定家目录为/var/ftp

useradd –d 家目录 用户名:

useradd –d /var/ftp ftp

如果已存在就不需要创建:

cat /etc/pass|grep ftp

5) 修改builddefs.h 文件,添加需要的功能

在vsftpd-3.0.2目录下vim builddefs.h

如果需要某个功能就将undef修改为define

比如其中的undef VSF_BUILD_TCPWRAPPERS,如果在vsftpd.conf中增加tcp_wrappers=YES的配置就需要将这项改为define VSF_BUILD_TCPWRAPPERS

可以看到已经开启的有ftp登录验证方式pam,建议将SSL验证方式也加上

4、开始编译安装

1)编译:

make

可以看到如下报错:

tcpwrap.c:16:20: error: tcpd.h: No such file or directory
tcpwrap.c: In function ‘vsf_tcp_wrapper_ok’:
tcpwrap.c:29: error: storage size of ‘req’ isn’t known
cc1: warnings being treated as errors
tcpwrap.c:31: error: implicit declaration of function ‘request_init’
tcpwrap.c:31: error: ‘RQ_DAEMON’ undeclared (first use in this function)
tcpwrap.c:31: error: (Each undeclared identifier is reported only once
tcpwrap.c:31: error: for each function it appears in.)
tcpwrap.c:31: error: ‘RQ_FILE’ undeclared (first use in this function)
tcpwrap.c:32: error: implicit declaration of function ‘fromhost’
tcpwrap.c:33: error: implicit declaration of function ‘hosts_access’
tcpwrap.c:29: error: unused variable ‘req’
make: *** [tcpwrap.o] Error 1

通过rpm –qa|grep tcp_wrappers,可以发现缺少tcp_wrappers-devel包,可以通过yum install tcp_wrappers-devel进行安装。由于服务器在内网,需要在外网下载安装包然后通过rpm –Uvh tcp_wrappers-7.6-58.el6.x86_64.rpm进行升级安装,注意需要同时下载tcp_wrappers-libs-7.6-58.el6.x86_64.rpm安装包,因为依赖于它。

继续编译报如下错误:

gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.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 -lcap
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1

需要查看系统是否为64位:

getconf LONG_BIT

可以看到是64位系统,因此需要更改vsf_findlibs.sh文件库中lib 路径:

sed -i 's/lib\//lib64\//g' vsf_findlibs.sh

编译完成

2)安装:

make install

完成后将vsftpd.conf文件复制到/etc目录下,否则在启动vsftpd服务时需要指定启动服务使用的配置文件:

2.1)cp vsftpd.conf /etc
2.2)cp RedHat/vsftpd.pam /etc/pam.d/vsftpd   //PAM验证文件
2.3)修改/etcvsftpd.conf配置文件,将
local_enable=YES
write_enable=YES
xferlog_enable=YES
xferlog_std_format=YES

解除注释

如果不使用默认端口20需要将connect_from_port_20=YES注释掉,并添加下面的配置:

listen_port=14888//使用的连接端口
pasv_min_port=14100//主动模式的端口范围
pasv_max_port=14200

在配置文件中添加:

pam_service_name=vsftpd
userlist_enable=YES
#tcp_wrappers=YES

其中pam_service_name是指定pam验证的文件是/etc/pam.d/vsftpd

userlist_enable=YES是限制其中的用户不能ftp登录,这是为了防止权限过高的用户登录进行非法操作。

2.4)下面的文件根据情况进行复制,可以先不复制

cp vsftpd /usr/local/sbin/vsftpd
cp vsftpd.conf.5 /usr/local/man/man5
cp vsftpd.8 /usr/local/man/man8

3)启动vsftpd服务

/usr/local/sbin/vsftpd &

需要加&进行后台启动

3.1)连接ftp

ftp 127.0.0.1 14888

报错如下:

说明文件不存在,可以自己手动创建,然后将需要禁止的用户加入其中

touch /etc/vsftpd.user_list

如果也报vsftpd.ftpusers文件不存在,同样的也创建vsftpd.ftpusers文件。

继续登录系统报如下错误:

530一般有这几种情况

1、vsftpd.conf中是否添加了如下配置:

local_enable=YES  
pam_service_name=vsftpd
userlist_enable=YES

2、修改/etc/vsftpd/ftpusers

编辑vim /etc/pam.d/vsftpd

其中ftpusers是ftp拒绝的系统用户,如果需要登录的用户在其中,将其去掉。

另外,不要把/etc/pam.d/vsftpd里面的deny改成allow,不然你自己建立的用户就会报530 Login incorrect。

3、注释掉

#auth    required pam_shells.so

4、还有一种情况是我遇到到,比较特殊,是/etc/pam.d/vsftpd中配置的文件目录是/lib下,而实际上需要修改为lib64下的文件,如果找不到报530的原因可以尝试这种方法。

4)500 OOPS: vsftpd: refusing to run with writable anonymous root解决方法

当使用匿名用户登录时有可能报这种错,因为vsftpd出于安全考虑对 /home/ftp是不允许没有限制的,所以需要手动修改权限:

chown root:root /home/ftp
chmod 755 /home/ftp
chown root:root /var/ftp
chmod 755 /var/ftp

4)这样自己创建的用户就可以通过ftp登录了,别忘记修改防火墙配置。

useradd –d /home/ftpuser fuser

5)关闭服务

使用ps –rf|grep vsftpd查看vsftpd服务进程

然后通过kill -9 PID删除进程

设置开机自启动 :用vim打开etc/rc.local在里面加入/usr/local/sbin/vsftpd & 即可。

查看vsftpd版本:vsftpd –version

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dongyuxu342719/article/details/82620581

智能推荐

[常用办公软件] wps怎么自动生成目录?wps自动生成目录的设置教程_wps目录自动生成-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏5次。转载请说明来源于"厦门SEO"本文地址:http://www.96096.cc/Article/160880.html常用办公软件  WPS Office是由金山软件股份有限公司开发的一款针对个人永久免费的办公软件,在我们的日常生活和工作中,WPS Office比起微软Microsoft Office来说在文字上的处理会更深入国人用户的人心,熟悉操作WPS的办公小技巧,能够更高效的提高我们的工作效率,今天小编要为大家分享的是WPS怎么自动生成目录?快来一起看看WPS自动生成目录的设置教程吧。_wps目录自动生成

web项目-程序员宅基地

文章浏览阅读7.4k次,点赞2次,收藏19次。web项目是指服务端部署在服务器上,客户端使用浏览器通过网络传输进行访问获取数据的项目。通常我们看见的应用页面网站等等都可以称之为web项目。 在web项目的开发中可分为web前端开发和web后端开发 web前端:即是客户端能看得见碰得着得东西。包括Web页面结构、页面样式外观以及Web层面得交互展现。 前端特点:页面视觉效果良好(客户第一)、Web页面交互流畅(..._web项目

关于java操作excel导入导出三种方式_java导出excel的三种方法-程序员宅基地

文章浏览阅读5.6k次,点赞8次,收藏67次。java操作关于导入导出Excel的多种方式_java导出excel的三种方法

Windows系统环境变量path详解_windows path-程序员宅基地

文章浏览阅读1.1w次,点赞10次,收藏21次。Windows path系统变量编辑_windows path

Hadoop基础教程-第13章 源码编译(13.2 Hadoop2.7.3源码编译)_hadoop2.7.3-src源码下载-程序员宅基地

文章浏览阅读512次。第13章 源码编译13.2 Hadoop2.7.3源码编译13.2.1下载Hadoop源码包(1)到官网http://hadoop.apache.org/releases.html下载2.7.3的source源码包(2)解压缩tar -zxvf hadoop-2.7.3-src.tar.gz -C /opt1(3)打开解压目录下的BUILDING.txt,编译过程和需要的软件其实就是根据这个文档里..._hadoop2.7.3-src源码下载

Latex 语法_\latex-程序员宅基地

文章浏览阅读1k次。Latex 语法_\latex

随便推点

【智能排班系统】基于AOP和自定义注解实现接口幂等性-程序员宅基地

文章浏览阅读884次。使用多种方式实现接口幂等性,通过定义注解方便对方法进行幂等性控制

SpringBoot整合Swagger2 详解_springboot swagger2 开关-程序员宅基地

文章浏览阅读324次。SpringBoot、Swagger2 整合详解_springboot swagger2 开关

spring boot 项目报错 java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized_springboot项目里面报错 the server time zone value ' й-程序员宅基地

文章浏览阅读2.8w次,点赞96次,收藏115次。报错说是时区不对因为mysql-connection-java版本导致时区的问题。pom.xml:控制台报错信息:java.sql.SQLException: The server time zone value ‘�й���׼ʱ��’ is unrecognized or represents more than one time zone. You must configure ei..._springboot项目里面报错 the server time zone value ' й

最全Android Kotlin 学习路线(Kotlin 从入门、进阶到实战)_kotlin学习-程序员宅基地

文章浏览阅读4.2k次。Kotlin 是由 jetBrains 开发的一门现代多平台应用的静态编程语言,Kotlin 代码即可以编译成 Java 字节码,又可以编译成 JavaScript,Kotlin 是开源的,源码在这。Kotlin 包含了大量的语法糖,在编码的时候,会大大的简化我们的代码量及工作效率。且相比传统的 Java 语言,Kotlin 种大量的简写,可以减少很多用Java 必须要写的样板代码,减少大量的 if…else 等嵌套,减少大量接口的实现,代码结构也会更加清晰。_kotlin学习

【前端素材】推荐优质新鲜绿色蔬菜商城网站设计Harmic平台模板(附源码)-程序员宅基地

文章浏览阅读753次,点赞30次,收藏21次。在线绿色新鲜果蔬商店网站是指一个专门销售新鲜、绿色、有机水果和蔬菜的电子商务平台。这类网站旨在为消费者提供方便、快捷的购买渠道,同时确保他们能够购买到高质量、新鲜的产品。

elementui表格添加fixed之后样式异常_element table fixed 样式异常-程序员宅基地

文章浏览阅读1k次。最近写项目碰到一个bug 大概就是一个表格组件两个页面都会使用 组件中表格的某些列就用v-if控制了 表格的首尾列都用了fixed 然后就发生了bug 如下图 具体原因不明看过很多网上的办法 有在fixed的列绑定key的 也有使用doLayout()的 测了都没用 最后在一个前端交流群里一位大佬给出的办法 实测有效.el-table__header, .el-table__body, .el-table__footer { width: 100%; tab_element table fixed 样式异常