适用于:centos7 centos8
1、检查安装vsftpd软件
rpm -qa |grep vsftpd
可以检测出是否安装了vsftpd软件,如果没有安装,使用YUM命令进行安装
yum install vsftpd -y
2、启动服务
使用vsftpd软件,主要包括如下几个命令:
查看ftp状态
systemctl status vsftpd
启动ftp命令
systemctl start vsftpd
停止ftp命令
systemctl stop vsftpd
重启ftp命
systemctl restart vsftpd
开机时启用服务:
systemctl enable vsftpd
在开机时禁用服务:
systemctl disable vsftpd
查看服务是否开机启动:
systemctl is-enabled vsftpd
查看已启动的服务列表:
systemctl list-unit-files|grep enabled
查看启动失败的服务列表:
systemctl --failed
3、vsftpd的配置文件
ftp的配置文件主要有三个,位于/etc/vsftpd/目录下,分别是:
ftpusers 该文件用来指定那些用户不能访问ftp服务器。
user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp
vsftpd.conf vsftpd的主配置文件
4、创建虚拟用户
(1)创建ftp文件目录:
mkdir /ftpdata
(2)添加虚拟用户,该用户没有登录机器的权限,只有上传ftpdata有权限:
useradd ftpuser -d /ftpdata/ -s /sbin/nologin
(3)修改ftpdata目录权限,把创建的用户和创建的文件夹的权限对应上。-R表示遍历,把用户或者用户组赋予到/ftpdata这个文件夹的权限上
chown -R ftpuser.ftpuser /ftpdata/
(4)重设ftpuser密码:密码为123456
passwd ftpuser
Changing password for user ftpuser.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
5、vsftpd服务器的配置
查看配置文件位置
whereis vsftpd
vi /etc/vsftpd/vsftpd.conf
vsftpd.conf文件的配置文件的添加或更新配置
本项目要用到的配置项:
1)local_root=/ftpdata #当本地用户登入时,将被更换到定义的目录下,默认值为各用户的家目录
2)anon_root=/ftpdata #使用匿名登入时,所登入的目录
3)use_localtime=YES #默认是GMT时间,改成使用本机系统时间
4)anonymous_enable=NO #不允许匿名用户登录
5)local_enable=YES #允许本地用户登录
6)write_enable=YES #本地用户可以在自己家目录中进行读写操作
7)local_umask=022 #本地用户新增档案时的umask值
8)dirmessage_enable=YES #如果启动这个选项,那么使用者第一次进入一个目录时,会检查该目录下是否有.message这个档案,如果有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。默认值为开启
9)xferlog_enable=YES #是否启用上传/下载日志记录。如果启用,则上传与下载的信息将被完整纪录在xferlog_file 所定义的档案中。预设为开启。
10)connect_from_port_20=YES #指定FTP使用20端口进行数据传输,默认值为YES
11)xferlog_std_format=YES #如果启用,则日志文件将会写成xferlog的标准格式
12)ftpd_banner=Welcome to mmall FTP Server #这里用来定义欢迎话语的字符串
13)chroot_local_user=NO #用于指定用户列表文件中的用户是否允许切换到上级目录
14)chroot_list_enable=YES #设置是否启用chroot_list_file配置项指定的用户列表文件
15)chroot_list_file=/etc/vsftpd/chroot_list #用于指定用户列表文件
16)listen=YES #设置vsftpd服务器是否以standalone模式运行,以standalone模式运行是一种较好的方式,此时listen必须设置为YES,此为默认值。建议不要更改,有很多与服务器运行相关的配置命令,需要在此模式下才有效,若设置为NO,则vsftpd不是以独立的服务运行,要受到xinetd服务的管控,功能上会受到限制
17)pam_service_name=vsftpd #虚拟用户使用PAM认证方式,这里是设置PAM使用的名称,默认即可,与/etc/pam.d/vsftpd对应) userlist_enable=YES(是否启用vsftpd.user_list文件,黑名单,白名单都可以
18)pasv_min_port=60000 #被动模式使用端口范围最小值
19)pasv_max_port=60100 #被动模式使用端口范围最大值
20)pasv_enable=YES #pasv_enable=YES/NO(YES)
6、修改ftp访问策略
如果文件上传时,提示553错误:553 Could not create file.
则需要修改SElinux策略 ftpd_full_access
查看当前配置:
getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
策略规则ftpd_full_access--> off导致了操作失败,启用该参数:
setsebool -P ftpd_full_access=on
7、Linux防火墙设置
添加端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=60000-60100/tcp --permanent
重新载入
firewall-cmd --reload
查看端口
firewall-cmd --zone=public --list-ports