在 CentOS 中安装 vsftpd
2022/12/09
安装 vsftpd 服务器
1、安装 vsftpd。
# dnf install vsftpd
2、设置 vsftpd 自启动。
# systemctl start vsftpd # systemctl enable vsftpd
3、开启防火墙的 21 端口,如果使用的是阿里云 ECS,默认防火墙是不可用的,这步可以跳过。
# firewall-cmd --zone=public --permanent --add-port=21/tcp # firewall-cmd --zone=public --permanent --add-service=ftp # firewall-cmd --reload
配置 vsftpd 服务器
4、配置 vsftpd 服务器前,我们先把默认的配置文件复制一份。
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.old
5、打开 /etc/vsftpd/vsftpd.conf 这个文件进行如下配置。
#除下面提及的参数,其他参数保持默认值即可。 #禁止匿名登录FTP服务器。 anonymous_enable=NO #允许本地用户登录FTP服务器。 local_enable=YES #监听IPv4 sockets,如果服务器支持IPv6,则将此参数设为NO。 listen=NO #监听IPv6 sockets,可以通过netstat -antup | grep ftp
命令查看是否支持IPv6。 listen_ipv6=YES #设置本地用户登录后所在目录。 local_root=/root/Downloads #全部用户被限制在主目录。 chroot_local_user=YES #启用例外用户名单。 chroot_list_enable=YES #指定例外用户列表文件,列表中用户不被锁定在主目录。 chroot_list_file=/etc/vsftpd/chroot_list #开启被动模式。 pasv_enable=YES allow_writeable_chroot=YES #设置服务器公网IP,一般可以不设置 pasv_address=<FTP服务器公网IP地址>
#设置被动模式下,建立数据传输可使用的端口范围的最小值。 #建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。 pasv_min_port=50000 #设置被动模式下,建立数据传输可使用的端口范围的最大值。 pasv_max_port=50010
6、创建 chroot_list 文件,并在文件中写入例外用户名单。
# 编辑chroot_list文件
vim /etc/vsftpd/chroot_list
#输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。
将root
填入,多个用户一行一个,然后保存。
7、设置安全组
搭建好 FTP 站点后,在实例安全组的入方向添加规则并放行下列 FTP 端口。被动模式需开放21
端口,以及配置文件/etc/vsftpd/vsftpd.conf 中参数pasv_min_port
和pasv_max_port
之间的所有端口。
最后重启服务。
systemctl restart vsftpd
使用 SELinux 配置 vsftpd(可选配置)
8、允许用户访问自己的 Home 目录。
# setsebool -P tftp_home_dir on
上面这个命令适用于 CentOS 9 及以上版本,如果是 9 以下的版本则需要把 tftp_home_dir 改为 ftp_home_dir,即如下命令:
# setsebool -P ftp_home_dir on
9、授权对自己 Home 目录的读写权限。
# semanage boolean -m ftpd_full_access --on
10、启动 vsftpd。
# systemctl restart vsftpd
vsftpd 配置文件及参数说明
/etc/vsftpd
目录下文件说明如下:
/etc/vsftpd/vsftpd.conf
是 vsftpd 的核心配置文件/etc/vsftpd/ftpusers
是黑名单文件,此文件中的用户不允许访问 FTP 服务器/etc/vsftpd/user_list
是白名单文件,此文件中的用户允许访问 FTP 服务器
配置文件 vsftpd.conf 其它参数说明
用户登录控制参数说明
配置 | 说明 |
---|---|
anonymous_enable = YES | 接受匿名用户 |
no_anon_password = YES | 匿名用户 login 时不询问口令 |
anon_root = (none) | 匿名用户主目录 |
local_enable = YES | 接受本地用户 |
local_root = (none) | 本地用户主目录 |
用户权限控制参数说明
配置 | 说明 |
---|---|
write_enable = YES | 可以上传文件(全局控制) |
local_umask = 022 | 本地用户上传的文件权限 |
file_open_mode = 0666 | 上传文件的权限配合 umask 使用 |
anon_upload_enable = NO | 匿名用户可以上传文件 |
anon_mkdir_write_enable = NO | 匿名用户可以建目录 |
anon_other_write_enable = NO | 匿名用户修改删除 |
chown_username = lightwiter | 匿名上传文件所属用户名 |