前戏
- FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。
- 常见的FTP服务器:
- linux
- Windows
以下以linux系统安装vsftpd为例
环境准备
#关闭防火墙
[root@web02 ~]# systemctl stop firewalld
#查看selinux状态
[root@web02 ~]# getenforce
#关闭selinux
[root@web02 ~]# setenforce 0
安装
使用rpm包安装ftp
#查看vsftpd软件包是否安装
[root@web02 ~]# rpm -qa|grep vsftpd
#安装
[root@web02 ~]# yum install -y vsftpd
[root@web02 ~]# systemctl status vsftpd
使用系统光盘中的安装包
[root@web02 ~]# mount /dev/cdrom /mnt/
[root@web02 ~]# cd /mnt/Packages/
[root@web02 Packages]# ll|grep vsftpd
-rw-rw-r-- 1 root root 175412 Nov 12 2018 vsftpd-3.0.2-25.el7.x86_64.rpm
[root@web02 Packages]# rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm
vsftpd配置文件详解
#配置文件
[root@web02 ~]# rpm -ql vsftpd
/etc/vsftpd/vsftpd.conf #主配置文件
/var/ftp/pub #默认情况下,匿名用户根目录
#用户限制相关文件
[root@web02 ~]# ll /etc/vsftpd/
total 24
-rw------- 1 root root 125 Oct 31 2018 ftpusers #用户黑名单
-rw------- 1 root root 361 Oct 31 2018 user_list #用户白名单(由配置文件决定)
-rw-r--r-- 1 root root 534 Mar 6 01:06 vsftpd.conf
-rwxr--r-- 1 root root 338 Oct 31 2018 vsftpd_conf_migrate.sh #vsftpd 操作的一些变量和设置脚本
#user_list: 指定的用户是否可以访问ftp服务器,通过vsftpd.conf文件中的userlist_deny的配置来决定配置中的用户是否可以访问,userlist_enable=YES ,userlist_deny=YES ,userlist_file=/etc/vsftpd/user_list 这三个配置允许文件中的用户访问FTP
#vsftpd主配置文件
[root@web02 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #允许匿名用户访问
local_umask=022
anon_upload_enable=YES #控制是否允许匿名用户上传文件
anon_mkdir_write_enable=YES #控制是否允许匿名用户创建目录
anon_other_write_enable=YES #控制匿名用户上传、下载、创建、删除权限
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anon_root=/opt/ftp
#限制用户目录切换
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_use=YES
#用户白名单
userlist_enable=YES
#userlist_deny=NO
#userlist_file=/etc/vsftpd/vsftpd.user_list
#注意,匿名用户只有访问权限
#注意匿名、登录用户的家目录权限为755
创建vsftpd登录用户
[root@web02 ~]# useradd test
[root@web02 ~]# passwd test
权限修改
[root@web02 ~]# chown -R ftp.ftp /var/ftp
客户端连接服务端
命令行连接
[root@web02 ~]# ftp 10.197.184.74
Connected to 10.197.184.74 (10.197.184.74).
220 (vsFTPd 3.0.2)
Name (10.197.184.74:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.