CentOS 服务ftp(vsftpd)

1、检查是否已经安装vsftpd

yum list installed | grep vsftpd

2、安装vsftpd

yum install -y vsftpd

3、检查vsftpd

systemctl status vsftpd.service

4、设置ftp服务自动启动

开启自动启动
systemctl enable vsftpd.service
关闭自动启动
systemctl disable vsftpd.service

5、启动ftp服务

systemctl start vsftpd.service

6、防火墙端口设置

查看zone信息,一般是public
firewall-cmd --get-active-zones
永久打开21端口,--zone=public参数可以省略
firewall-cmd --zone=public --add-port=21/tcp --permanent
添加ftp服务
firewall-cmd --permanent --zone=public --add-service=ftp

添加ftp服务后,一般可以不用添加21端口,这个端口会被默认打开,在/etc/services文件中,这个端口已经被注册给ftp服务使用
如果要修改缺省的ftp21端口,需要修改/etc/services里的注册端口号,并且vsftpd的配置文件vsftpd.conf需要修改listen_port的端口号
重新加载防火墙配置
firewall-cmd --reload

7、添加ftp用户

添加用户xu.dm.ftp,在root组,目录是/home/data,禁止登录,只能ftp
useradd -g root -d /home/data -s /sbin/nologin xu.dm.ftp
设置密码
passwd xu.dm.ftp

8、设置ftp权限

和SElinux相关,一般情况下都是直接把SELinux禁用了
setsebool -P ftpd_full_access on
vi /etc/selinux/config 
# 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 - SELinux is fully disabled. 
SELINUX=enforcing 
#SELINUX=disabled 
# SELINUXTYPE= type of policy in use. Possible values are: 
# targeted - Only targeted network daemons are protected. 
# strict - Full SELinux protection. 
SELINUXTYPE=targeted 
#SELINUX有「disabled」「permissive」,「enforcing」3种选择。 
模式的设置 :
enforcing:强制模式,只要selinux不允许,就无法执行 
permissive:警告模式,将该事件记录下来,依然允许执行 
disabled:关闭selinux;停用,启用需要重启计算机。 

9、修改vsftp配置文件,禁止匿名登录

vi /etc/vsftpd/vsftpd.conf

把:anonymous_enable=YES 改为: anonymous_enable=NO

10、done

 用FileZilla连接,一切OK。

11、vsftpd.conf主要参数

listen=[YES|NO]  是否以独立运行的方式监听服务
listen_address=IP 地址  设置要监听的 IP 地址
listen_port=21  设置 FTP 服务的监听端口
download_enable=[YES|NO]  是否允许下载文件
userlist_enable=[YES|NO] userlist_deny=[YES|NO] 设置用户列表为“允许”还是“禁止”操作
max_clients=0  最大客户端连接数,0 为不限制
max_per_ip=0  同一 IP 地址的最大连接数,0 为不限制
anonymous_enable=[YES|NO]  是否允许匿名用户访问
anon_upload_enable=[YES|NO]  是否允许匿名用户上传文件
anon_umask=022  匿名用户上传文件的 umask 值
anon_root=/var/ftp  匿名用户的 FTP 根目录
anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO] 是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0  匿名用户的最大传输速率(字节/秒),0 为不限制
local_enable=[YES|NO]  是否允许本地用户登录 FTP
local_umask=022  本地用户上传文件的 umask 值
local_root=/var/ftp  本地用户的 FTP 根目录
chroot_local_user=[YES|NO]  是否将用户权限禁锢在 FTP 目录,以确保安全
local_max_rate=0  本地用户最大传输速率(字节/秒),0 为不限制

12、登录模式

vsftpd 以三种认证模式登录到FTP服务器上。
1)是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到 FTP 服务器。
2)是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。上例就是使用本地账户进行认证的。
3)是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,
而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。

12.1、匿名登录模式参数:

anonymous_enable=YES  允许匿名访问模式
anon_umask=022  匿名用户上传文件的 umask 值
anon_upload_enable=YES  允许匿名用户上传文件
anon_mkdir_write_enable=YES  允许匿名用户创建目录
anon_other_write_enable=YES  允许匿名用户修改目录名称或删除目录

12.2、本地用户登录参数:

anonymous_enable=NO  禁止匿名访问模式
local_enable=YES  允许本地用户模式
write_enable=YES  设置可写权限
local_umask=022  本地用户模式创建文件的 umask 值
userlist_enable=YES  启用“禁止用户名单”,名单文件为 ftpusers 和 user_list
userlist_deny=YES 开启用户作用名单文件功能(default)
#vsftpd服务的目录里默认存放这两个文件ftpusers和user_list,默认情况下,在这两个文件列表里的用户是不允许使用ftp登录
[root@bigdata-senior01 vsftpd]# cat ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

#user_list列表里的用户是允许登录还是不允许主要是看配置 [root@bigdata
-senior01 vsftpd]# cat user_list # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody
原文地址:https://www.cnblogs.com/asker009/p/10217609.html