1)安装前检查系统版本
[root@192168088101_vsftp_server vsftpd]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
2)vsftpd软件包的安装方式
a. 通过yum方式安装ftp服务yum install vsftpd -y
b. 通过rpm方式安装
下载链接:http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd
3)安装成功后,检查安装的vsftpd的rpm包版本,然后命令启动vsftpd,查看vsftp服务是否正常;
[root@192168088101_vsftp_server vsftpd]# rpm -qa|grep ftp
vsftpd-3.0.2-25.el7.x86_64
[root@192168088101_vsftp_server vsftpd]# /bin/systemctl start vsftpd.service
[root@192168088101_vsftp_server vsftpd]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 55166/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7301/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7460/master
tcp6 0 0 :::22 :::* LISTEN 7301/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7460/master
注:
a. 本文以CentOS 7.3 x64系统进行实际操作演示
b. RPM软件包名称:vsftpd-3.0.2-25.el7.x86_64
1)新增test用户,指定用户的家目录,并且禁止test用户登陆系统
[root@192168088101_vsftp_server vsftpd]# useradd -d /home/ftpuser -s /sbin/nologin test
[root@192168088101_vsftp_server vsftpd]# tail -n 1 /etc/passwd //检查用户是否创建成功
test:x:1000:1000::/home/ftpuser:/sbin/nologin
说明:
a. -s /sbin/nologin 是让其不能登陆系统?
b. -d 是指定用户目录为/home/ftpuser,这里可以替换成任何你需要的目录
c. test是ftp用户名,在配置时把这个test换成你的ftp用户名
d. 用useradd建立的用户,如果后面不加–s /sbin/nologin参数,建立的用户为普通系统用户,有系统登陆centos服务器的权限;
e. 在useradd命令后面加上参数–s /sbin/nologin,为centos 服务器虚拟主机添加不可以登录系统的专用账号(虚拟账户)
2)给test用户设置一个密码
[root@192168088101_vsftp_server vsftpd]# passwd test
Changing password for user test.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@192168088101_vsftp_server pam.d]# grep -v ^# /etc/vsftpd/vsftpd.conf
#不允许匿名用户登陆
anonymous_enable=NO
#允许本地用户登录
local_enable=YES
#允许本地用户具有读写的权限
write_enable=YES
#本地用户新增档案的权限,设置为022时,用户上传文件权限为-rw-r--r--,例:文件默认权限=666-umask值 666-022=644,目录默认权限=777-umask 值 777-022=755
local_umask=022
#进入每个目录是显示欢迎信息,在每个目录下建立.message文件在里面写欢迎信息
dirmessage_enable=YES
#让系统自动维护上传和下载的日志文件,默认情况该日志文件为/var/log/vsftpd.log
xferlog_enable=YES
#启用FTP数据端口的连接请求,tp-data数据传输,21为连接控制端口
connect_from_port_20=YES
#日志文件位置
xferlog_file=/home/logs/xferlog
#使用标准的ftpd xferlog格式保存日志文件
xferlog_std_format=YES
#vsftp的默认设置是所有目录都可以被进入,极为不安全,因此要限制用户可以访问目录,限制用户只能访问自己的家目录
chroot_local_user=YES
chroot_list_enable=YES
allow_writeable_chroot=YES
chroot_list_file=/etc/vsftpd/chroot_list
#开启IPV4端口监听
listen=YES
#关闭IPV6端口监听
listen_ipv6=NO
#vsftpd将使用的PAM服务的名称
pam_service_name=vsftpd
#如果启用,并且vsftpd是使用tcp_wrappers支持编译的,则传入连接将通过tcp_wrappers访问控制提供
tcp_wrappers=YES
说明:
ftp测试的时候,最好先把防火墙和selinux关闭[root@192168088101_vsftp_server vsftpd]# firewall-cmd --state running [root@192168088101_vsftp_server vsftpd]# /bin/systemctl stop firewalld.service [root@192168088101_vsftp_server vsftpd]# firewall-cmd --state not running [root@192168088101_vsftp_server vsftpd]# getenforce Enforcing #永久关闭selinux [root@192168088101_vsftp_server vsftpd]# vim /etc/sysconfig/selinux SELINUX=enforcing 改为 SELINUX=disabled #临时关闭selinux [root@192168088101_vsftp_server vsftpd]# setenforce 0 [root@192168088101_vsftp_server vsftpd]# getenforce Permissive
#查看防火墙运行状态
[root@192168088101_vsftp_server ftpuser]# firewall-cmd --state
running
#添加允许ftp服务通行的规则
[root@192168088101_vsftp_server ftpuser]# firewall-cmd --add-service=ftp --permanent
success
#修改防火墙规则后,需要重启ftp服务
[root@192168088101_vsftp_server ftpuser]# systemctl reload firewalld.service
#查看已添加的防火墙规则
[root@192168088101_vsftp_server ftpuser]# firewall-cmd --list-services
ssh dhcpv6-client ftp
[root@192168088101_vsftp_server ftpuser]# firewall-cmd --info-service=ftp
ftp
ports: 21/tcp
protocols:
source-ports:
modules: ftp
destination:
#删除ftp服务的规则,删除规则后,ftp服务将不可访问
[root@192168088101_vsftp_server ftpuser]# firewall-cmd --remove-service=ftp --permanent
官方链接:http://vsftpd.beasts.org/vsftpd_conf.html
中文链接:https://www.cnblogs.com/sopcce/p/10743359.html
原文:https://blog.51cto.com/14463906/2422826