1. vsftpd安装配置说明
vsftpd是“very secure FTP daemon”的缩写,是一款在Linux发行版中最受推崇的FTP服务器程序。本文操作是在CentOS7
下进行的。
1.1. 查看是否已经安装
vsftpd -v
1.2. 安装
yum install vsftpd -y
安装完成后,默认配置文件路径为/etc/vsftpd/vsftpd.conf
1.3. 相关命令
# 启动服务
systemctl start vsftpd
# 查看服务状态
systemctl status vsftpd
# 停止服务
systemctl stop vsftpd
# 设为开机启动
systemctl enable vsftpd
# 查看服务是否开机启动
systemctl is-enabled vsftpd
1.4. 配置vsftpd
根据两种方式建立Vsftpd虚拟用户的介绍,
登录FTP有三种方式:匿名登录、本地用户登录和虚拟用户登录。
- 匿名登录:默认用户名,一般是anonymous
- 本地用户登录:使用操作系统的用户登录,用户名在
/etc/passwd
中 - 虚拟用户登录:ftp的专用用户,可以使用本地数据文件或数据库实现
在本文中使用虚拟用户登录,这样可以增强系统的安全。
为了方便,使用本地数据文件方式实现虚拟用户。
1.4.1. 添加虚拟用户口令文件
# 新建文件存放用户名和密码
vim /etc/vsftpd/virtual_users.txt
# 添加虚拟用户名和密码,奇数行是用户名,偶数行是对应密码
common
123456789
ipo
ipo2019
1.4.2. 生成虚拟用户口令认证文件
将virtual_users.txt文件转换成系统认证文件
db_load
是CentOS7自带命令,不需要安装
cd /etc/vsftpd
db_load -T -t hash -f virtual_users.txt vftpuser.db
1.4.3. 编辑vsftpd的PAM认证文件
vim /etc/pam.d/vsftpd
# 注释全部行,然后添加下面两行
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
1.4.4. 建立本地映射用户
ftp虚拟用户需要使用一个系统用户,这个用户可以不需要密码
useradd -d /home/ftp ftpuser
1.4.5. 配置vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
# 向文件中添加内容
#开启虚拟用户
guest_enable=YES
# FTP虚拟用户对应的系统用户
guest_username=ftpuser
# 指定虚拟用户配置的文件夹
user_config_dir=/etc/vsftpd/vsftpd_user_conf
# 关闭DNS反向解析,可以解决登录ftp慢的问题
reverse_lookup_enable=NO
1.4.6. 为每个虚拟用户建立独立的配置文件
可以对每个虚拟用户建立对应配置文件,下面以ipo用户为例.
更多权限设置建议查看vsftp虚拟用户权限问题
# 创建存放配置的文件夹
mkdir /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_user_conf
# 使用虚拟用户名创建对应文件
vim ipo
# 添加下面内容
# 开放写权限
write_enable=YES
# 浏览目录和下载权限
anon_world_readable_only=NO
# 上传文件权限
anon_upload_enable=YES
# 创建文件夹权限
anon_mkdir_write_enable=YES
# 删除和重命名的权限
anon_other_write_enable=YES
# 用户登录后的根目录
local_root=/home/ftp/ipo
1.4.7. 配置ftp根目录的权限
取消local_root
的w权限,否则会报500 OOPS错误
由于取消了w权限,所以需要提前在ipo
文件夹内创建文件夹(以后也可以root创建文件夹,再修改权限)
# 提前创建文件夹用来存放文件
mkdir /home/ftp/ipo/your-directory
# 删除ipo文件夹的w权限
chmod a-w /home/ftp/ipo
1.4.8. 重启服务
systemctl restart vsftpd
1.5. 卸载vsftpd
完全卸载软件需要删除包和数据文件
# 取消开机启动
systemctl disable vsftpd
# 停止服务
systemctl stop vsftpd
# 卸载包
yum autoremove vsftpd -y
# 删除数据文件
rm /etc/vsftpd -rf