centos7安装vsftpd,配置

安装该软件需要使用最高用户(root)进行安装

一. 安装vsftp

查看是否已安装

[root@mariadb-10 ~]# rpm -q vsftpd 
vsftpd
-3.0.2-21.el7.x86_64

或者

[root@mariadb-10 ~]# vsftpd -v vsftpd: version 3.0.2

在线安装

yum -y install vsftpd

查看位置

[root@mariadb-10 ~]# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz

设置开机启动

systemctl enable vsftpd

启动

systemctl start vsftpd

重启

systemctl restart vsftpd

停止

systemctl stop vsftpd

查看状态

systemctl status vsftpd

 二. 配置防火墙

1.关闭SELinux

vi /etc/selinux/config

修改SELINUX=disabled

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

然后输入命令

setenforce 0

注,临时生效命令

修改firewall使之允许ftp功能启动firewall

systemctl start firewalld.service

输入命令

[root@mariadb-10 home]# firewall-cmd --permanent --zone=public --add-service=ftp
success

重启firewall

[root@mariadb-10 home]# firewall-cmd --reload
success

如果没有重要的数据在服务器里面,或者在本地虚拟机中外网无法访问的情况下,建议直接关闭防火墙即可省略以上繁琐的步骤

systemctl stop firewalld.service

三. 启动ftp服务

 启动ftp

systemctl start vsftpd

查看ftp状态,返回以下说明服务已启动

[root@mariadb-10 home]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2021-12-09 16:13:39 CST; 3s ago
  Process: 8706 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 8707 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─8707 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

12月 09 16:13:39 mariadb-10.3.23 systemd[1]: Starting Vsftpd ftp daemon...
12月 09 16:13:39 mariadb-10.3.23 systemd[1]: Started Vsftpd ftp daemon.

设置开机自启动

chkconfig vsftpd on

 三 ftp访问匿名访问测试

在浏览器输入ftp服务访问地址 ,例如 ftp://192.168.0.14/ ,安装完毕默认匿名可访问

 默认浏览的是/var/ftp目录

四. 创建用户

首先创建一个目录,作为这个ftp用户所拥有的目录

mkdir -p /home/ftproot/ftptest

 创建用户ftptest,并且指定其目录为用户目录中创建的/home/ftproot/ftptest

useradd -d /home/ftproot/ftptest -g ftp -s /sbin/nologin ftptest

 -g ftp 表示该用户属于ftp分组 (ftp分组是内置的,本来就存在,不需要自己创建)

-s /sbin/nologin 表示这个用户不能用来登录secureCRT这样的客户端,这种不能登陆的用户又叫做虚拟用户

 创建过程给出的警告信息是正常的,不用理会

把目录/home/ftproot/ftptest的拥有者设置为ftptest

chown -R ftptest /home/ftproot/ftptest

使ftptest用户拥有这个目录的读写权限 

chmod -R 775 /home/ftproot/ftptest

为ftptest用户设置密码 

[root@mariadb-10 vconf]# passwd ftptest
更改用户 ftptest 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

  

五. 配置

目前 FTP 服务登陆允许匿名登陆,也无法区分用户访问,我们需要配置 FTP 访问权限;

vsftpd 的配置目录为 /etc/vsftpd,包含下列的配置文件:

  • vsftpd.conf 为主要配置文件
  • ftpusers 配置禁止访问 FTP 服务器的用户列表
  • user_list 配置用户访问控制

 配置文件位置

/etc/vsftpd/vsftpd.conf

建议先备份一下。

vi /etc/vsftpd/vsftpd.conf

编辑器显示行号

:set number

 修改第12行,禁止匿名登录

anonymous_enable=NO

限制用户访问,创建的ftptest用户所拥有的目录是 /home/ftproot/ftptest,如果不做限制,那么使用ftptest登陆之后可以切换到其他敏感目录去,比如切换到/usr目录去,这样就存在巨大的安全隐患。 为了规避这个隐患,需要限制ftptest用户只能通过ftp访问到 /home/ftproot/ftptest 目录以及子目录。

第102行,去掉注释

chroot_list_enable=YES

 第104行,去掉注释

chroot_list_file=/etc/vsftpd/chroot_list

注:
chroot_list_enable=YES: 表示对用户访问进行限制
chroot_list_file=/etc/vsftpd/chroot_list 表示对chroot_list里面指定的用户进行限制

vsftpd服务器,一旦某个用户被限制访问了,那么默认情况下,该用户的写权限也被剥夺了。 这就导致ftp客户端连接上服务器之后无法上传文件。这个时候,就需要打开此用户的写权限。

添加账号到chroot_list里,一行一个用户账号

[root@localhost vsftpd]# vi /etc/vsftpd/chroot_list

filesync

 在vsftpd.conf的最后加上

allow_writeable_chroot=YES

 vsftpd有两种端口:

一种是21端口,用来监听客户端连接请求的。 这个一般说来是固定的,就一直使用21端口。
一种是,一旦获取到请求之后,再专门用户服务端和客户端传输数据的端口。 (安装用的这种)

在vsftpd.conf的最后追加

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30010

这表示使用被动模式,用于传输数据的端口分配从30000-30010之间

六. 用户鉴权

因为用户 ftptest 是 nologin的,所以存在鉴权的问题。 如果鉴权问题不解决,就是永不停息的 530错误。。。

解决办法有如下两种:

1. 方式一:编辑/etc/pam.d/vsftpd

vi /etc/pam.d/vsftpd

注释下面这一行

#auth required pam_shells.so

这样不去鉴权,从而允许 ftptest 这种 nologin用户登录 ftp 服务器

 2.方式二:shells 文件

在/etc/shells文件里面增加一行:/sbin/nologin

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin

这样允许不能登录系统的用户通过鉴权

七: 重启服务

systemctl restart vsftpd.service

然后用浏览器,ftp命令或ftp工具访问了

 

 

 

 

 

 参考: 

https://blog.csdn.net/zwd926/article/details/89884089

https://blog.csdn.net/qq_28245087/article/details/85631049

posted @ 2021-12-11 13:10  猪脚踏浪  阅读(1449)  评论(0编辑  收藏  举报