vsftpd安装

1. 配置本地yum源

1.1 上传ISO文件

上传系统镜像文件CentOS-7.iso到目标服务器

1.2 挂载ISO文件

# mkdir /media/cdrom
[新建镜像文件挂载目录]
# mount -t iso9660 -o loop /home/CentOS-7.iso /media/cdrom
[挂载系统镜像]
# cd /media/cdrom
[进入挂载目录,使用ls命令可以看到已经有文件存在了]

1.3 设置开机自启动

# vi /etc/fstab
[添加以下代码,实现开机自动挂载]
/home/CentOS-7.iso /media/cdrom iso9660 defaults,loop 0 0

1.4 配置本地yum源

[进入yum配置目录]
# cd /etc/yum.repos.d/
[建立yum配置文件]
# vi CentOS-7.repo
[编辑配置文件,添加以下内容]
[CentOS-7]
name=CentOS-7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=1
gpgkey=file:///media/cdrom/RPM-GPG-KEY-CentOS-7

1.5 测试yum是否正常

# yum clean all
[清除yum缓存]
# yum makecache
[缓存本地yum源中的软件包信息]
# yum repolist
[显示本地yum源中的软件包信息]
挂载之后可能还是无法使用,进入/etc/yum.repos.d/ 将Centos.Base.repo重命名使其失效即可
yum安装时出现类似“warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY”的报错,是导入了旧的KEY文件,执行rpm --import /etc/pki/rpm-gpg/RPM*导入新KEY即可

2. 安装vsftpd

2.1 安装vsftpd服务

yum -y install vsftpd

2.2 配置防火墙开放FTP端口

[防火墙开放FTP端口]
firewall-cmd --permanent --add-port=2231/tcp
firewall-cmd --permanent --add-port=45000-49000/tcp
[重启防火墙]
firewall-cmd --reload

2.3 配置selinux允许FTP服务

[安装policycoreutils-python包]
yum -y install policycoreutils-python.x86_64
[配置selinux允许FTP服务]access是用于访问ftp,home_dir是用于访问ftp存放的文件夹
setsebool -P allow_ftpd_full_access on
setsebool -P tftp_home_dir on

3. 使用虚拟用户模式配置FTP

3.1 创建用于FTP认证的用户数据库文件

[奇数行为账号,偶数行为密码]
vi /etc/vsftpd/virtual.txt
model
123456
limit
123456
[明文信息不安全,需使用哈希算法转换为数据文件]
db_load -T -t hash -f /etc/vsftpd/virtual.txt /etc/vsftpd/virtual.db
[更改数据文件权限为仅所有者读写]
chmod 600 /etc/vsftpd/virtual.db
[删除明文信息]
rm -rf /etc/vsftpd/virtual.txt

3.2 创建虚拟用户映射的系统本地用户和FTP根目录

[创建本地用户]-d指定用户家目录,-s /sbin/nologin禁止登录系统
useradd -d /home/vsftpd -s /sbin/nologin virtual
[创建虚拟用户目录]
mkdir /home/vsftpd/虚拟用户名
[更改家目录权限为所有者读写执行,其它人可读写]
chown -R virtual:virtual /home/vsftpd
chmod -R 766 /home/vsftpd/

3.2 建立用于支持虚拟用户的PAM文件

[auth:验证用户口令,accout:验证用户权限,db=:数据文件路径(不带后缀)]
vi /etc/pam.d/virtual
auth required pam_userdb.so db=/etc/vsftpd/virtual
account required pam_userdb.so db=/etc/vsftpd/virtual

3.3 为虚拟用户设置权限

[创建虚拟用户配置文件目录]
mkdir /etc/vsftpd/virtual
[创建虚拟用户配置文件]
touch /etc/vsftpd/virtual/虚拟用户名
[编辑虚拟用户配置文件]
vi /etc/vsftpd/virtual/虚拟用户名

1
2
3
4
5
6
7
8
# 指定虚拟用户的根目录
local_root=/home/vsftpd/虚拟用户名
# 允许虚拟用户上传文件
anon_upload_enable=yes
# 允许虚拟用户创建目录
anon_mkdir_write_enable=yes
# 允许虚拟用户执行其他操作(修改、删除等)
anon_other_write_enable=yes
3.4 编辑vsftpd配置文件

vi /etc/vsftpd/vsftpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
anonymous_enable=NO
# 允许匿名用户访问:否
anon_umask=022
# 上传文件权限掩码,限制默认权限
local_enable=YES
# 必须允许本地用户登录才能开启虚拟用户模式
guest_enable=YES
# 开启虚拟用户模式
guest_username=virtual
#指定虚拟用户对应的系统用户
allow_writeable_chroot=YES
# 允许对FTP根目录执行写入操作
write_enable=YES
# 全局设置允许登录用户有写权限:是
local_umask=022
# 本地用户上传文件权限掩码,限制默认权限
local_root=/home/vsftpd
# FTP根目录
dirmessage_enable=YES
# 显示需注意的信息
xferlog_enable=YES
# 记录日志
connect_from_port_20=YES
# 主动模式端口为20
xferlog_std_format=YES
# 传输日志文件以标准格式书写:是
listen_port=2231
# 命令端口,默认为21
listen=YES
# 以独立服务方式运行:是
listen_ipv6=NO
# 启用后vdftpd会监视IPV6套接字而非IPV4,与listen互斥
pam_service_name=virtual
# 指定PAM文件
userlist_enable=NO
# 开启userlist功能:否
tcp_wrappers=NO
# 支持tcp_wrappers,限制访问IP:否
user_config_dir=/etc/vsftpd/virtual
# 指定虚拟用户配置文件目录
pasv_min_port=45000
pasv_max_port=49000
# 被动模式端口范围
3.5 重启vsftpd服务载入配置

systemctl restart vsftpd
[将vsftpd服务设为开机自启]
systemctl enable vsftpd
[连接FTP服务测试用户权限]
ftp FTP服务器IP 命令端口
[下载文件]
ftp> get FTP文件名 本地文件名
[上传文件]
ftp> put 本地文件名 FTP文件名
[退出FTP连接]
ftp> quit