目录
3.6.3 在 user_list 文件中添加本地用户(白名单)
1. 搭建 VSFTP 服务
FTP(File Transfer Protocol) 是一种用于在网络上进行文件传输的协议,允许用户通过客户端和服务器之间上传、下载文件。
1.1 安装 vsftpd
dnf install vsftpd -y
1.2 配置 vsftpd
systemctl enable vsftpd #设置 vsftpd 为开机自启
systemctl start vsftpd #启动 FTP 服务
systemctl status vsftpd #查看服务启动状态
1.3 配置防火墙
方式一:将 ftp 服务可通过防火墙
firewall-cmd --permanent --add-service=ftp #将 FTP 服务永久添加到防火墙的允许规则中,确保 FTP 流量可以通过防火墙
firewall-cmd --reload #重新加载防火墙规则,是更改立即生效
firewall-cmd --list-all #查看当前防火墙的所有配置
方式二:关闭防火墙
systemctl stop firewalld
2. 匿名用户配置
完成以上三个步骤后,可对用户进行访问配置
2.1 编辑配置文件
vi /etc/vsftpd/vsftpd.conf #查看 vsftpd 配置文件
2.2 匿名用户——登录控制参数
参数 | 说明 |
---|---|
anonymous_enable=YES | 允许匿名用户登录,默认为NO |
anon_root=(none) | 匿名用户的根目录(可选) |
*no_anon_password=YES | 匿名登录无需密码 |
匿名用户的默认根目录是 /var/ftp,不能有写权限,否则会拒绝登录。
2.3 匿名用户——权限控制参数
参数 | 说明 |
---|---|
anon_upload_enable=YES | 允许匿名上传 |
anon_mkdir_write_enable=YES | 允许匿名用户创建目录 |
anon_other_write_enable=YES | 允许删除/重命名(谨慎启用) |
chown_username=lightwiter | 匿名上传文件所属用户名 |
2.4 重启 vsftpd
systemctl restart vsftpd #重启vsftpd,使更改的配置文件生效
2.5 注意事项
匿名用户如果想要操作目录,不仅需要在 vsftpd.conf 配置文件中有相应的权限控制参数,还要拥有相应的目录权限,一般是 w 权限。
举例说明:
要求:
-
已知在匿名用户的默认根目录 /var/ftp 下有一个目录 demo
-
让匿名用户在 demo 目录下创建一个新目录 subdemo
步骤一:修改配置文件
vi /etc/vsftpd/vsftpd.conf
# 添加一下内容
anon_mkdir_write_enable=YES
systemctl restart vsftpd
步骤二:给 demo 目录授权
#方式一
chown ftp:ftp /var/ftp/demo
#方式二
chmod a+w /var/ftp/demo
#方式三
chmod o+w /var/ftp/demo
3. 本地用户配置
3.1 准备工作
主要是使本地用户对为其设置的主目录拥有相应的操作权限。
# 创建本地用户
useradd ftpuser
# 设置本地用户密码
echo "123456" | passwd --stdin ftpuser
# 创建目录作为本地用户主目录
mkdir -p /var/ftp/test
# 修改目录权限,使本地用户对该目录拥有相应操作的权限
chown -R ftpuser:ftpuser /var/ftp/test
or
chmod -R a+w /var/ftp/test
or
chmod -R o+w /var/ftp/test
3.2 编辑配置文件
vi /etc/vsftpd/vsftpd.conf
3.3 本地用户——登录控制参数
参数 | 说明 |
---|---|
local_enable=YES | 允许本地用户登录 |
local_root=(none) | 设置本地用户根目录,默认为家目录 |
3.4 本地用户——权限控制参数
参数 | 说明 |
---|---|
write_enable=YES | 允许上传文件(写入文件)(全局控制) |
local_umask=022 | 本地用户上传的文件权限 |
file_open_mode=0666 | 上传文件的权限配合 umask 使用 |
3.5 禁锢本地用户在指定目录中
限制本地用户只能访问指定目录。
vi /etc/vsftpd/vsftpd.conf
# 添加以下内容
local_root=/var/ftp/test # 设置本地用户默认的访问路径
chroot_local_user=YES # 限制本地用户只能访问默认的访问路径
allow_writeable_chroot=YES
systemctl restart vsftpd
如果不指定 local_root ,默认的访问路径是该用户的家目录,即 /home/本地用户名。
如有需求,可指定某些用户,使其被禁锢到指定目录后,仍具备访问其他目录的权限。
vi /etc/vsftpd/vsftpd.conf
# 添加以下内容
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vi /etc/vsftpd/chroot_list
# 添加以下内容
ftpuser
systemctl restart vsftpd
3.6 用户名单列表使用(黑白名单)
在 FTP服务端的 /etc/vsftpd 目录下存在有两个文件:ftpuser 和 user_list。
ftpuser 文件:该文件列出了不允许访问 FTP 服务的用户,这些用户被绝对禁止登录到 FTP 服务器。
user_list 文件:该文件控制哪些用户可以访问 FTP 服务,具体取决于配置文件 vsftpd.conf 中 userlist_enable 和 userlist_deny 的设置。
3.6.1 开启白名单
vi /etc/vsftpd/vsftpd.conf
# 修改以下内容
userlist_enable=YES # 开启用户名单列表功能
# 添加以下内容
userlist_deny=NO #开启白名单,user_list 变为白名单文件
# 保存后,重启 FTP 服务
systemctl restart vsftpd
3.6.2 在 ftpusers 文件中解放用户(黑名单)
vi /etc/vsftpd/ftpusers
# 进入文件后删除掉或者注释掉要解放的用户
由图片可以注意到,root用户默认就在 ftpuser 黑名单文件中。所以,当在客户端采用 root 直接访问 ftp 服务是被禁止的,即 FTP 默认不允许 root 访问。客户端 “ lftp ftp://root:123456@192.168.88.101 ”该命令运行失败。
3.6.3 在 user_list 文件中添加本地用户(白名单)
vi /etc/vsftpd/user_list
#进入文件后添加本地用户
说明:添加到白名单的本地用户,在通过客户端连接访问时,默认主目录为家目录 /home/本地用户,对其他目录没有 w 权限,可访问。
vsftpd.conf 配置文件中对本地用户的配置仍然生效。
4. 客户端 FTP 服务配置
4.1 安装 lftp
dnf install lftp -y
4.2 连接 FTP 服务器
# 匿名用户连接
lftp ftp://192.168.88.101
# 本地用户连接
lftp ftp://ftpuser:123456@192.168.88.101
4.3 FTP 主要操作
操作 | 说明 |
---|---|
? | 列出 FTP 常见功能 |
get [文件名] | 下载文件到本地 |
put [文件名] | 上传文件到服务器 |
mget [文件名列表] | 批量下载文件 |
mput [文件名列表] | 批量上传文件 |
bye/exit/quit | 退出 FTP 会话 |