手把手教你 centos ftp 安装与配置

110 阅读4分钟

vsftpd(Very Secure FTP Daemon)是一个安全、快速、稳定的FTP服务器,广泛应用于各种Linux发行版中。本文将介绍在Linux中安装和配置vsftpd的步骤。

安装

在大多数Linux发行版中,vsftpd是默认安装的。如果您的系统没有安装vsftpd,请使用以下命令安装:

  • CentOS/RHEL

    sudo yum install vsftpd

配置

安装完成后

配置文件在 /etc/vsftpd/vsftpd.conf

安装完成后,我们需要配置访问方式。有三种模式可供选择:匿名访问、本地账号访问和虚拟账号访问。根据自己的需求选择相应的模式,下面将依次介绍这三种模式的配置方法。

方式一: 匿名访问

要启用匿名访问,编辑vsftpd配置文件。使用以下命令打开配置文件:

sudo vi /etc/vsftpd/vsftpd.conf

找到以下行并将其更改为“YES”:

anonymous_enable=YES

保存并关闭文件。

相反,如果你想关闭匿名访问,将其改为“NO”即可

anonymous_enable=NO

方式二:本地账号访问

通过 Linux 的用户名和密码链接FTP,这种方式的配置比较简单。

首先,我们创建一个名为 ftpuser 的用户,用于登录 FTP:

sudo adduser ftpuser

按照提示输入新用户的密码。

允许FTP用户访问

要允许FTP用户访问,请将以下行添加到vsftpd.conf文件的底部:

local_enable=YES
write_enable=YES

重启vsftpd服务

要使所有更改生效,请重启vsftpd服务:

  • CentOS/RHEL

    sudo systemctl restart vsftpd

设置防火墙

开放21和20端口(云服务器控制台和服务器防火墙都需要设置,具体可查询其他资料)

可以通过以下方法暂时关闭防火墙

# iptables
service iptables stop
# firewalld 
service firewalld stop 
# 如果没有安装防火墙可直接跳过

现在你可以在客户端用账号ftpuser登录ftp了,登录后可以读写当前用户的目录/home/ftpuser。

如果你想修改登录的目录,可以通过配置项local_root进行控制。

local_root=/home/username

请注意

  • 不是所有本地用户都可以登录 FTP。在 /etc/vsftpd 文件夹下有一个 ftpuser 文件,其中的用户名无法登录 FTP。

白名单与黑名单

通过上述步骤,其实已经实现了ftp的链接,如果你想限制部分账户可以登录ftp或者部分账号无法登录ftp,可以通过配置项 userlist_enable 和 userlist_deny 来实现

  • 黑名单模式,在user_list文件中用户无法登录ftp

    #是否启用黑名单/ 白名单 userlist_enable=YES
    #黑名单模式 userlist_deny=YES

  • 白名单模式,只有在user_list文件中用户才能登录ftp

    #是否启用黑名单/ 白名单 userlist_enable=YES
    #白名单模式 userlist_deny=NO

方式三:虚拟账号访问

如果你需要分配较多的ftp账号,每一个ftp账号都需要创建一个linux用户,很显然,这并不是那么安全,这时候你可能需要用到虚拟账号

安装工具,运行命令

yum install db4 db4-utils -y

编写账号密码文件

vi  /etc/vsftpd/vuser_passwd.txt

在文件中写入用户名和密码,切记奇数行为用户名,偶数行为密码

user1
passwd1
user2
passwd2

退出并保存

运行命令:

db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

运行命令:

vi /etc/pam.d/vsftpd

注释掉所有内容,并填写以下内容

auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd

保存并退出

创建用户相关配置文件夹

mkdir /etc/vsftpd/vuser_conf
cd /etc/vsftpd/vuser_conf
vi user1 
# 文件名和vuser_passwd.text 文件中填写的一致,每一个用户一个文件

复制并粘贴以下内容

# /var/www 按照实际情况修改
local_root=/var/www
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

最后我们还需要在vsftpd.conf 文件追加以下配置

# 开启虚拟用户访问
guest_enable=YES
#ftp用户名为centos 自带的用户,虚拟账号都会映射到这个账号
guest_username=ftp
# 用于存放用户配置的目录
user_config_dir=/etc/vsftpd/vuser_conf

请注意,虚拟账号 user1、user2 同样也受用户白名单和黑名单的控制,如果你开启了白名单,不要忘记将虚拟账号加入白名单,或者可以通过 userlist_enable=NO 直接关闭黑白名单。

sudo systemctl restart vsftpd

结论

到这里vsftpd 基础的配置就结束了。

最后再送你一份自动安装脚本,一键安装

pengzai-dev/installsh: 自动安装脚本 (github.com)