开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
@[toc]
前言
最近在调研ftp服务的登陆 所以有必要安装研究一下作为Linux端ftp的实现软件—— vsftpd
以vsftpd 3.02版本为例
一、安装配置
1.1 卸载vsftpd
先查找vsftpd是否安装
[root@localhost ~]# rpm -aq vsftpd
vsftpd-3.0.2-29.el7_9.x86_64
有输出就代表已经安装了
卸载之前先停止vsftpd
systemctl stop vsftpd
再卸载
rpm -e vsftpd
1.2 安装vsftpd
yum install -y vsftpd
注意:如果提示"No package vsftpd available."
执行如下
wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/vsftpd-3.0.2-29.el7_9.x86_64.rpm
rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm
1.3 安装ftp客户端
yum install ftp -y
如果提示“No package ftp available.”, 则执行以下操作
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/ftp-0.17-67.el7.x86_64.rpm
rpm -ivh ftp-0.17-67.el7.x86_64.rpm
1.4 启动vsftpd
systemctl start vsftpd
1.5 防火墙配置
防火墙放行21端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
防火墙永久开放ftp服务,即类似windows 防火墙可让该应用 通行
firewall-cmd --add-service=ftp --permanent
防火墙重新加载
firewall-cmd --reload
1.6 Selinux配置
CentOS的所有访问权限都是由SELinux来管理的,为了避免我们安装中由于权限关系而导致的失败,需要先将其关闭,以后根据需要再进行重新管理。
查看selinux状态
[root@localhost script]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
临时关闭selinux
# 临时关闭SE
getenforce
setenforce 0
永久关闭
getsebool -a | grep ftp
setsebool -P ftpd_full_access on
二、相关目录
# vsftp配置文件
/etc/vsftpd/vsftpd.conf
# PAM认证文件
/etc/pam.d/vsftpd
# 匿名用户默认目录
/var/ftp
# 匿名用户的下载目录
/var/ftp/pub
# 不能访问 ftp server 的用户列表
/etc/vsftpd/ftpusers
# 允许访问 ftp server 的用户列表
/etc/vsftpd/user_list
# ftp 的上传下载日志
/var/log/xferlog
# ftp登陆日志目录 需要 vsftpd.conf conf dual_log_enable=YES
/var/log/vsftpd.log
三、配置conf
3.1 配置/etc/vsftpd/vsftpd.conf
先备份一份
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
注意:添加配置项时结尾不要有空格 不然可能会启动不了服务
3.2 配置列表
四、使用
4.1 开启vsftpd登陆日志
vsftp配置文件/etc/vsftpd/vsftpd.conf 添加:
dual_log_enable=YES
然后重启ftp服务即可
systemctl restart vsftpd
4.2 使用Winscp Root账号登陆FTP
- 修改 vsftpd.conf 配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=077
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anon_root=/var/ftp/
dual_log_enable=YES
- 修改user_list配置 注释掉root
- 修改ftpusers配置 注释掉root
4.3 匿名模式 访问ftp服务
4.4 本地用户模式 访问ftp服务
4.5 虚拟用户模式
五、常见问题
5.1 匿名访问ftp服务
ftp://xx.xxx.xxx.xx 访问时超时或者无法访问
5.2 使用Winscp Root角色登陆 提示 Permission denied.
ftpusers文件
查看root角色是否在 不能访问 ftp server 的用户列表/etc/vsftpd/ftpusers中,如果在删除
user_list文件
查看root角色是否在 允许访问 ftp server 的用户列表/etc/vsftpd/user_list中,如果不在就添加
If userlist_deny=NO, only allow users in this file If userlist_deny=YES (default), never allow users in this file, and
5.3 /var/log/vsftpd.log 不存在或者为空
1.为空 可能是没有登陆行为
2.vsftpd.conf 没有添加 dual_log_enable=YES
配置项
5.4 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list
参考 /etc/vsftpd/vsftpd.conf #编辑vsftpd配置文件 找到以下三行,注释掉就行可以了
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
改为
#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
重启FTP
systemctl restart vsftpd
Winscp登陆访问ftp时 提示“监测到超时! (数据连接) 无法获得目录列表 列出‘/‘的目录项时出错。”
总结
本节主要介绍了vsftp的安装和使用,有问题的可以评论留言
参考: Linux使用笔记:配置FTP服务器(vsftp) VSFTP介绍安装使用 centos7搭建vsftpd-配置文件全解 阿里云的esc ftp搭建