部署vsftpd服务

实验环境

基于Linux CentOS7.9部署vsftpd服务
服务器防火墙和SElinux均为关闭状态
外部访问使用filezilla软件

实验步骤

1.安装vsftp服务以及相关工具包和依赖

yum -y install vsftpd* pam* db4*

vsftpd: ftp软件
pam: 认证模块
db4: 支持文件数据库
2.vsftpd配置文件说明
/etc/vsftpd/vsftpd.conf
vsftpd的核心配置文件

/etc/vsftpd/ftpusers
用于指定哪些用户不能访问FTP服务器

/etc/vsftpd/user_list
指定允许使用vsftpd的用户列表文件

/etc/vsftpd/vsftpd_conf_migrate_sh
是vsftpd操作的一些变量和设置脚本

/etc/ftp/
默认情况下匿名用户的根目录

image_1_1image_1_2
3.配置解释
image_2_1
4.备份配置文件

cp -av /etc/vsftpd/vsftpd.conf /opt/vsftpd.conf.bak202605121412

在这里插入图片描述
注:尽量不要备份在原目录下,所有的.conf文件都有可能被vsftpd服务读取,导致服务报错。

5.启动服务并设为开机自启
image_2_3

【匿名用户】

1.提前备份好配置文件原文件后开始修改配置文件内容

原配置文件内容太多太复杂,全部删掉后输入以下内容


```bash
anonymous_enable=YES
anon_root=/var/ftp
listen=YES
listen_ipv6=NO
#匿名用户权限
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
write_enable=YES
#安全限制
#创建文件权限为750 (777-027=750)
anon_umask=027
chroot_local_user=YES
allow_writeable_chroot=YES
#隐藏真实用户信息
#hide_ids=YES
#上传目录限制
anon_world_readable_only=NO
anon_world_readable_only=NO
no_anon_password=YES
#被动模式设置
pasv_enable=YES
pasv_min_port=64000
pasv_max_port=64321
#替换为服务器公网IP
pasv_address=your_server_ip
#日志记录
xferlog_enable=YES
xferlog_std_format=NO
log_ftp_protocol=YES
vsftpd_log_file=/var/log/vsftpd.log
#连接限制
max_clients=50
max_per_ip=5
local_max_rate=1024000
anon_max_rate=512000
#超时设置
idle_session_timeout=300
data_connection_timeout=60
#安全增强
session_support=NO
seccomp_sandbox=NO
#require_shell=/sbin/nologin;

![image_3_1](https://i-blog.csdnimg.cn/img_convert/d04c28714a11041fc327957e09cbeea0.png)
### 2.配置完成之后,给匿名用户设置文件目录并给相应的权限

```bash
mkdir -p /var/ftp/upload(设置一个目录)
chown ftp:ftp /var/ftp/upload(将新建目录用户和组都改为ftp)
chmod 755 /var/ftp/upload(这个文件的权限是增删)

3.配置完成后进行重新启动服务

image_4_1

4.进入FTP的软件中进行访问,选择匿名用户进行登录

这里以filezilla演示

image_4_2

image_5_1

5.测试权限是否正确

5.1点开我们刚才所新建的目录upload,创建两个文件和目录

image_5_2
创建成功
删除一个文件和目录
image_5_3
删除成功
以上说明权限正确

5.2进入自带的pub目录

创建目录失败
image_5_4
使用root用户创建一个目录和一个文件
image_5_5
删除失败
image_6_1
可以成功下载
image_6_2

6.返回客户端查看匿名用户创建的文件和目录

image_6_3

【本地用户】

1.修改配置文件

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf

image_6_4

2.创建用户配置目录,要和配置文件中的目录保持一致

 mkdir -pv /etc/vsftpd/vsftpd_user_conf

3.配置本地用户在刚才创建的目录中

image_7_1

4.创建用户fanzc,并加入FTP组中,设置密码为“1”

useradd -g ftp fanzc
echo 1 | passwd --stdin fanzc
id fanzc

image_7_2

5.创建刚才文件中的目录,并设置权限

mkdir -pv /data/fanzc

image_7_3

chown -R fanzc /data/fanzc
ls -ld /data/fanzc
chmod 755 -R /data/fanzc
ls -ld /data/fanzc

image_7_4

6.配置完成后重启服务

systemctl restart vsftpd

image_7_5

7.进行测试

7.1在ftp客户端中输入刚才所创建的用户名和密码

image_7_6
创建目录成功
image_8_1
删除目录成功
image_8_2
回到服务器查看b目录是否存在
image_8_3

【虚拟用户】

1.创建本地系统用户和共享目录

创建一个无法登录系统的本地用户,并设置共享目录权限:

useradd -d /var/ftp/shared -s /sbin/nologin virtualftp
mkdir -p /var/ftp/shared
chown -R virtualftp:virtualftp /var/ftp/shared
chmod 755 /var/ftp/shared

image_8_4

2.创建虚拟用户数据库

创建认证文件

cat > /etc/vsftpd/vusers.txt << EOF
teacher
teacher123
student
student123
EOF

image_9_1

3生成数据库文件:

db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db
chmod 600 /etc/vsftpd/vusers.db
rm -f /etc/vsftpd/vusers.txt

image_9_2

4.配置pam认证文件

cat > /etc/pam.d/vsftpd_virtual << EOF
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
EOF

image_9_3

5.修改配置文件

cat > /etc/vsftpd/vsftpd.conf << EOF
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd_virtual
userlist_enable=YES
#虚拟用户配置
guest_enable=YES
guest_username=virtualftp
virtual_use_local_privs=NO
user_config_dir=/etc/vsftpd/user_conf
allow_writeable_chroot=YES
hide_ids=YES
hide_ids=YES
EOF

image_9_4

6.创建用户配置文件目录和配置文件

mkdir -p /etc/vsftpd/user_conf

在这里插入图片描述

创建老师用户的配置文件(/etc/vsftpd/user_conf/teacher):

cat > /etc/vsftpd/user_conf/teacher << EOF
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF

image_10_2
创建学生用户的配置文件** (/etc/vsftpd/user_conf/student):

cat > /etc/vsftpd/user_conf/student << EOF
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
EOF

image_10_3

设置 SELinux 和防火墙然后启动服务

工作环境中如下配置,学习实验环境直接关闭防火墙和selinux

设置 SELinux

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
semanage fcontext -a -t public_content_rw_t "/var/ftp/shared(/.*)?"
restorecon -Rv /var/ftp/shared

配置防火墙

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
systemctl start vsftpd
systemctl enable vsftpd

image_11_1

image_11_2

登录ftp

教师权限可以上传下载,新建和删除文件目录
学生权限可以上传下载,不可以新建和删除文件目录
image_11_3

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐