由于之前使用的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

tar包安装vsftpd相关推荐

  1. centos 7使用tar包安装ansible

    由于我的yum源没有ansible软件包,防止以后内网服务器也没有ansible的yum源,干脆一点,直接tar包安装!!!! 下载软件包 - # 1.python安装 # python2.7安装 [ ...

  2. linux 命令mysql5.6,linux下mysql5.5mysql5.6的tar包安装

    提前yum安装依赖包 yum -y install perl perl-devel libaio* 'perl(Data::Dumper)' 准备好mysql的tar包 1.在/usr/local下解 ...

  3. centos利用tar包安装phpmyadmin

    我的网站根目录地址为/var/www/html,phpmyadmin安装包在/tmp下. 注意:php版本低于5.1的建议安装phpmyadmin2.11,因为phpmyadmin3.3对php版本的 ...

  4. linux下tar包安装sudo命令,ubuntu12.04LTS安装gv-412-Linux-x86.tar.gz方法

    折腾了2天多,终于装好了. 操作系统 Ubuntu 12.04 LTS (在win7系统下用ubuntu的windows安装工具安装的,有点类似双系统) gaussian view程序 gv-412- ...

  5. 奥塔在线:CentOS下使用tar包安装Tomcat85

    #获取8.5版本 tomcat wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.3 ...

  6. linux通过tar包安装docker

    下载地址 各个版本Docker地址:https://download.docker.com/linux/static/stable/x86_64/ 解压拷贝 添加服务 [Unit] Descripti ...

  7. MHA-node MHA-manger相关依赖包安装

    ##安装MHA-node(集群内所有服务器都要安装),MHA-manger(检测服务器安装) >安装EPEL源,解决些依赖包找不到, https://fedoraproject.org/wiki ...

  8. CentOS7中解压tar包的方式安装Nginx

    场景 CentOS中怎样安装.配置.启动Nginx: CentOS中怎样安装.配置.启动Nginx_BADAO_LIUMANG_QIZHI的博客-CSDN博客_centos怎么启动nginx 上面实现 ...

  9. mysql8.0 tar安装_CentOS7安装MySQL8.0 tar包

    CentOS7安装MySQL8.0 tar包 一.卸载 1. 查看有没有安装mysql rpm -qa | grep mysql 删除 #rpm -e --nodeps mysql-libs-5.1. ...

  10. mysql linux c tar_linux下mysql的tar包离线安装

    linux下mysql的tar包离线安装 1.确保mysql安装之前有libaio依赖 yum search libaio yum install libaio 2.下载mysql的tar离线包 下载 ...

最新文章

  1. 有声专栏-宏基因组专业词汇讲解
  2. List与Map的遍历过程中删除元素
  3. SAP Spartacus ng serve 之后,localhost 4200 会后面自动添上 electronics-spa 吗?
  4. Hook的两个小插曲
  5. layui使用弹出层 关闭后弹层的内容又显示出来
  6. 门槛回归模型_stata15:门槛模型
  7. bundle中vim相关快捷键的使用
  8. Axure智慧水务移动端原型、智慧泵房、水厂监控、营收管理、DMA漏损、维护管理、GIS地图、水质监控、电商系统
  9. Apachebench压力测试
  10. html面试信息登记表
  11. linux 时间戳几字节,字节转换跟时间戳转换
  12. Jmeter性能测试报告模板
  13. 在微信中实现一键调用扫一扫
  14. Win10的Git中文文件名繁体火星文乱码问题
  15. vue 项目使用 Clipboard-复制文本或图片到剪贴板
  16. 你必须收藏的快速学习Autodesk最新编程接口的免费录像
  17. linux启动一个进程吗,你知道,当你在 Linux 上启动一个进程时会发生什么嘛?
  18. miscellaneous_7
  19. unordered_map详细介绍
  20. 提高抗打击能力_怎么有效提高自身的抗打击能力?

热门文章

  1. 分布式光伏运维服务器,户用分布式光伏电站运维指导手册——运维及安全
  2. matlab 求股票斜率,「matlab 求股票斜率」同花顺斜率抓强势股指标公式
  3. Python图像绘制字符画
  4. 玩转地球: 如何利用SAS绘制现代化地图(附代码)
  5. GPS导航仪的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. 类型多样的数码配件免抠元素素材,速来收藏
  7. C/C++ 动态检测内存错误利器 - ASan
  8. 微波射频学习笔记9--------品质因数Q值的意义
  9. CMOS MIPI EOT 学习 基于Zynq高速串行CMOS接口的设计与实现
  10. 如何通过iPhone或Android手机制作自己的QR码