CentOS8搭建ftp站点
1 安装vsftpd
dnf install -y vsftpd
2 检验是否安装成功
vsftpd -v
#安装成功显示
vsftpd: version 3.0.3
3 设定vsftpd开机自启
systemctl enable vsftpd.service
4 运行vsftpd
systemctl start vsftpd.service
5 查看ftp服务坚挺端口
netstat -antup | grep ftp
#提示
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 132086/vsftpd
6 创建用户
adduser test
7 修改用户密码
passwd test
8 创建ftp服务文件目录
mkdir /var/ftp/test
9 创建测试文件
touch /var/ftp/test/testfile.txt
10 更改目录拥有者
chown -R test:test /var/ftp/test
11 修改vsftpd.conf配置文件
#除下面提及的参数,其他参数保持默认值即可。
#修改下列参数的值:
#禁止匿名登录FTP服务器。
anonymous_enable=NO
#允许本地用户登录FTP服务器。
local_enable=YES
#监听IPv4 sockets。
listen=YES
#在行首添加#注释掉以下参数:
#关闭监听IPv6 sockets。
#listen_ipv6=YES
#在配置文件的末尾添加下列参数:
#设置本地用户登录后所在目录。
local_root=/var/ftp/test
#全部用户被限制在主目录。
chroot_local_user=YES
#启用例外用户名单。
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录。
chroot_list_file=/etc/vsftpd/chroot_list
#多用户时各用户配置文件,单用户可不加。
user_config_dir=/etc/vsftpd/userconfig
#开启被动模式。
pasv_enable=YES
allow_writeable_chroot=YES
#本教程中为Linux实例的公网IP。
pasv_address=<FTP服务器公网IP地址>
#设置被动模式下,建立数据传输可使用的端口范围的最小值。
#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
pasv_min_port=<port number>
#设置被动模式下,建立数据传输可使用的端口范围的最大值。
pasv_max_port=<port number>
12 创建chroot_list文件,并在文件中写入用户白名单
vim /etc/vsftpd/chroot_list
#此文件必须创建,但可以为空
#用户名必须每行一个
#此文件中的用户不会被锁定在主目录,可以访问其他目录
#注意,该文件中的用户不能是系统自建的权限高用户,例如root,Apache,Nginx等等,必须是你自建的权限低的用户,即便你在该文件写入root,ftp连接时也会无法登录的。
13 创建userconfig目录,多用户多目录所需,只是单个用户可以跳过
cd /etc/vsftpd
mkidr userconfig
cd userconfig
vim test1 #创建文件test1,写入下行内容
local_root=/var/ftp/test/test1
vim test2 #创建文件test2,写入下行内容
local_root=/var/ftp/test/test1
14 重启vsftpd
systemctl restart vsftpd.service
15 设置安全组
在安全组的入口方向添加规则,打开21端口,以及最小/最大范围端口,最小/最大端口与配置文件中端口值一致,授予对象为全部。
到此就可以使用工具测试ftp了。
还有几点需要特别注意:
/etc/vsftpd/vsftpd.conf #vsftpd的核心配置文件。
/etc/vsftpd/ftpusers #黑名单文件,此文件中的用户不允许访问FTP服务器。
/etc/vsftpd/user_list #白名单文件,此文件中的用户允许访问FTP服务器。
如果你观察ftpusers文件和user_list文件,会发现两文件中的用户基本一致,而当你尝试使用其中的某个用户登录时,却发现根本无法登录。
至于原因,与配置文件中的某两个参数有关。
userlist_enable = YES
userlist_deny = YES
当userlist_enable为NO时,无论userlist_deny是YES还是NO,所有本地用户都能登录ftp,
当userlist_enable为YES,userlist_deny为YES时,user_list文件就是一个黑名单,里面的用户都被拒绝登录ftp。
当userlist_enable为YES,userlist_deny为NO时,user_list文件就是一个白名单,只有文件内的用户才会被允许登录(使用白名单后,匿名用户将无法登录,除非配置参数中特别指出)。
注意:chroot_list文件不受上述两参数的控制,是被排出在外的。
补充:
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 #匿名上传文件所属用户名