基于Linux CentOS7.9中部署FTP服务
本文介绍了在Linux CentOS7.9环境下部署vsftpd服务的详细步骤。主要内容包括:安装vsftpd及相关依赖包,配置文件说明与修改,匿名用户和本地用户的配置方法。通过创建特定目录并设置权限,实现了FTP用户的上传、下载、创建和删除文件等操作权限控制。文章还提供了使用Filezilla客户端进行测试验证的具体操作过程,确保服务配置正确可用。整个部署过程涵盖了服务安装、配置修改、权限设置、
部署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/
默认情况下匿名用户的根目录


3.配置解释
4.备份配置文件
cp -av /etc/vsftpd/vsftpd.conf /opt/vsftpd.conf.bak202605121412

注:尽量不要备份在原目录下,所有的.conf文件都有可能被vsftpd服务读取,导致服务报错。
5.启动服务并设为开机自启
【匿名用户】
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;

### 2.配置完成之后,给匿名用户设置文件目录并给相应的权限
```bash
mkdir -p /var/ftp/upload(设置一个目录)
chown ftp:ftp /var/ftp/upload(将新建目录用户和组都改为ftp)
chmod 755 /var/ftp/upload(这个文件的权限是增删)
3.配置完成后进行重新启动服务

4.进入FTP的软件中进行访问,选择匿名用户进行登录
这里以filezilla演示


5.测试权限是否正确
5.1点开我们刚才所新建的目录upload,创建两个文件和目录

创建成功
删除一个文件和目录
删除成功
以上说明权限正确
5.2进入自带的pub目录
创建目录失败
使用root用户创建一个目录和一个文件
删除失败
可以成功下载
6.返回客户端查看匿名用户创建的文件和目录

【本地用户】
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

2.创建用户配置目录,要和配置文件中的目录保持一致
mkdir -pv /etc/vsftpd/vsftpd_user_conf
3.配置本地用户在刚才创建的目录中

4.创建用户fanzc,并加入FTP组中,设置密码为“1”
useradd -g ftp fanzc
echo 1 | passwd --stdin fanzc
id fanzc

5.创建刚才文件中的目录,并设置权限
mkdir -pv /data/fanzc

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

6.配置完成后重启服务
systemctl restart vsftpd

7.进行测试
7.1在ftp客户端中输入刚才所创建的用户名和密码

创建目录成功
删除目录成功
回到服务器查看b目录是否存在
【虚拟用户】
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

2.创建虚拟用户数据库
创建认证文件
cat > /etc/vsftpd/vusers.txt << EOF
teacher
teacher123
student
student123
EOF

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

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

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

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

创建学生用户的配置文件** (/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

设置 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


登录ftp
教师权限可以上传下载,新建和删除文件目录
学生权限可以上传下载,不可以新建和删除文件目录
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)