Skip to content

CentOS 7安装vsftpd

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

环境

  • 测试环境:VM ware
  • 系统版本:Centos 7 x64

准备工作

  • 一台已经安装好Linux Centos 7的电脑或服务器
  • 可以访问外网或本地yum源

流程概要

  1. 关闭防火墙及selinux
  2. 安装vsftpd
  3. 创建vsftpd的映射账户
  4. 创建虚拟用户目录及配置文件
  5. 创建数据库认证文件
  6. 修改pam认证
  7. 修改vsftpd配置文件

提示

本文以admin为演示账户

1.关闭防火墙及selinux

1.1关闭系统防火墙

bash
# 停止防火墙
systemctl stop firewalld.service
# 关闭防火墙
systemctl disable firewalld.service

1.2关闭selinux

查询是否开启了selinux

bash
sestatus

查看SELinux status是否开启(enabled)

显示enabled就说明SELinux是开着的,我们需要关掉。

临时关闭

bash
setenforce 0

永久关闭

bash
vi /etc/selinux/config

找到SELinux=enforcing

提示

将SELINUX=enforcing改为SELINUX=disabled

修改为SELinux=disabled

提示

修改后保存退出,然后重启Linux系统,重启命令:reboot或init 0

sestatus查看SELinux是否是disabled

SELinux status显示为disabled表示关闭了

2.安装vsftpd

2.1检查ftp

此命令检查是否安装过vsftpd

bash
rpm -qa |grep vsftpd

如果有安装过其他ftp,怕影响的可以执行下面

bash
rpm -qa |grep ftp

查询到后执行下方命令卸载

bash
yum remove vsftpd -y

提示

vsftpd是查询到ftp的比喻,如果是其他ftp请修改成其他ftp的包名。

2.2安装vsftpd

bash
yum install vsftpd -y

3.创建映射账户

bash
useradd vsftpd -d /vsftpd -s /bin/false

/bin/false禁止此账户登录系统

4.创建虚拟用户及配置文件

4.1创建虚拟用户

bash
vi /etc/vsftpd/vftpusers

创建一个虚拟用户配置文件,文件名为vftpusers,里面填虚拟用户的用户名及密码,奇数行为用户名,偶数行为密码,例如:

bash
admin
admin

创建了一个用户名和密码都为admin的用户,本文将以虚拟用户admin举例

4.2创建虚拟用户目录

bash
mkdir -p /vsftpd/admin

admin可替换为创建虚拟用户文件vftpusers时填写的用户名

有几个用户就创建几个,创建完成后执行下方命令将虚拟用户的目录所有者改为vsftpd这个账户

bash
chown -R vsftpd:vsftpd /vsftpd

4.3创建虚拟用户配置文件

创建一个文件夹存放虚拟用户的配置文件

bash
mkdir /etc/vsftpd/userconf

创建虚拟用户的配置文件

bash
touch /etc/vsftpd/userconf/admin

编辑此配置文件

bash
vi /etc/vsftpd/userconf/admin

添加如下代码,其中admin为4.2步骤中创建的文件夹

bash
local_root=/vsftpd/admin
write_enable=YES
anon_umask=022
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

警告

注意:不能有多余的空格

配置对应含义如下

bash
# 设置登录后禁锢的目录  xxx可修改为/etc/vsftpd/vftpusers内设置的用户且创建了虚拟用户目录。
local_root=/vsftpd/xxx
# 开放写权限
write_enable=YES
# 掩码
anon_umask=022
# 开放下载权限
anon_world_readable_only=YES
# 开放上传权限
anon_upload_enable=YES
# 开放创建目录的权限
anon_mkdir_write_enable=YES
# 开放删除和重命名的权限
anon_other_write_enable=YES

5.生成数据库认证文件

bash
db_load -T -t hash -f /etc/vsftpd/vftpusers /etc/vsftpd/vftpusers.db
chmod 600 /etc/vsftpd/vftpusers.db

6.pam认证

bash
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vi /etc/pam.d/vsftpd

注释里面所有的内容,在最后添加以下内容

bash
auth required pam_userdb.so db=/etc/vsftpd/vftpusers
account required pam_userdb.so db=/etc/vsftpd/vftpusers

7.修改vsftpd配置文件

bash
vi /etc/vsftpd/vsftpd.conf

配置文件(可直接替换)

配置详情
bash
#是否允许匿名登录
anonymous_enable=NO
#是否允许本地登录
local_enable=YES
#是否允许任何更改文件系统的FTP命令
write_enable=YES
#掩码
local_umask=022
#如果设置为YES,则允许匿名用户在特定条件下上载文件。
#anon_upload_enable=YES
#如果设置为YES,则允许匿名用户在特定条件下创建新目录
#anon_mkdir_write_enable=YES
#FTP服务器的用户首次进入新目录时可以显示消息
dirmessage_enable=YES
#如果启用,将维护一个日志文件,详细说明上载和下载。
xferlog_enable=YES
#这可以控制PORT样式数据连接是否在服务器计算机上使用端口20(ftp-data)。
connect_from_port_20=YES
#如果启用,则所有匿名上载的文件的所有权都将更改为设置chown_username中指定的用户。
#chown_uploads=YES
#这是获得匿名上传文件所有权的用户的名称。
#chown_username=whoever
#编写wu-ftpd样式传输日志的文件的名称。
#xferlog_file=/var/log/xferlog
#传输日志文件将以标准xferlog格式写入,如wu-ftpd所使用。
xferlog_std_format=YES
#超时(以秒为单位),即远程客户端在FTP命令之间可能花费的最长时间。
#idle_session_timeout=600
#超时(以秒为单位),大致是我们允许数据传输停止而没有进度的最长时间。
#data_connection_timeout=120
#这是vsftpd在完全没有特权的情况下使用的用户名。
#nopriv_user=ftpsecure
#启用后,将启用称为“异步ABOR”的特殊FTP命令。
#async_abor_enable=YES
#启用后,上传时将遵循ASCII模式数据传输。
ascii_upload_enable=YES
#启用后,下载时将遵循ASCII模式数据传输。
ascii_download_enable=YES
#欢迎信息
#ftpd_banner=Welcome to blah FTP service.
#如果激活,您可能会提供一个匿名密码电子邮件响应列表,导致登录被拒绝。
#deny_email_enable=YES
#此选项是包含不允许的匿名电子邮件密码列表的文件的名称。
#banned_email_file=/etc/vsftpd/banned_emails
#禁止用户访问除主目录以外的目录
chroot_local_user=YES
#是否启用例外名单
#chroot_list_enable=YES
#默认名单目录文件
#chroot_list_file=/etc/vsftpd/chroot_list
#如果启用,vsftpd将以独立模式运行。
listen=YES
#与listen参数一样,除了vsftpd将侦听IPv6套接字而不是IPv4套接字。此参数和listen参数是互斥的。
#listen_ipv6=YES
#此字符串是vsftpd将使用的PAM服务的名称。
pam_service_name=vsftpd
#如果启用,vsftpd将从userlist_file给出的文件名加载用户名列表。
userlist_enable=YES
#如果启用,并且vsftpd是使用tcp_wrappers支持编译的,则传入连接将通过tcp_wrappers访问控制提供。
tcp_wrappers=YES
#开启虚拟用户
guest_enable=YES
#主虚拟用户名
guest_username=vsftpd
#虚拟用户配置
user_config_dir=/etc/vsftpd/userconf
allow_writeable_chroot=YES

修改内容(可自行根据内容修改)

bash
# 修改
anonymous_enable=NO
listen=YES
# 取消注释
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
# 注释
listen_ipv6=YES
# 添加
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/userconf
allow_writeable_chroot=YES

8.常用vsftpd命令

bash
# 开机自启动
systemctl enable vsftpd
# 启动vsftpd
systemctl start vsftpd
# 重启vsftpd
systemctl restart vsftpd
# 停止vsftpd
systemctl stop vsftpd
# 关闭vsftpd
systemctl disable vsftpd
艾雨博客微信公众号二维码
© 版权声明
文章版权归作者所有,未经允许请勿转载.
本站资源多数存于云盘,如有失效请邮件联系我.
本网站的文章部分内容可能来源于网络,如有侵权,请联系884684993#qq.com进行删除处理.