FTP服务
部署vsftpd服务
实验环境
基于Linux CentOS7.9部署vsftpd服务
服务器防火墙和SElinux均为关闭状态
外部访问使用filezilla软件
实验步骤
1.安装vsftp服务以及相关工具包和依赖
yum-yinstallvsftpd* 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=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESchroot_local_user=YESallow_writeable_chroot=YESuser_config_dir=/etc/vsftpd/vsftpd_user_conf2.创建用户配置目录,要和配置文件中的目录保持一致
mkdir-pv/etc/vsftpd/vsftpd_user_conf3.配置本地用户在刚才创建的目录中
4.创建用户fanzc,并加入FTP组中,设置密码为“1”
useradd-gftpfanzcecho1|passwd--stdinfanzcidfanzc5.创建刚才文件中的目录,并设置权限
mkdir-pv/data/fanzcchown-Rfanzc /data/fanzcls-ld/data/fanzcchmod755-R/data/fanzcls-ld/data/fanzc6.配置完成后重启服务
systemctl restart vsftpd7.进行测试
7.1在ftp客户端中输入刚才所创建的用户名和密码
创建目录成功
删除目录成功
回到服务器查看b目录是否存在
【虚拟用户】
1.创建本地系统用户和共享目录
创建一个无法登录系统的本地用户,并设置共享目录权限:
useradd-d/var/ftp/shared-s/sbin/nologin virtualftpmkdir-p/var/ftp/sharedchown-Rvirtualftp:virtualftp /var/ftp/sharedchmod755/var/ftp/shared2.创建虚拟用户数据库
创建认证文件
cat>/etc/vsftpd/vusers.txt<<EOF teacher teacher123 student student123 EOF3生成数据库文件:
db_load-T-thash-f/etc/vsftpd/vusers.txt /etc/vsftpd/vusers.dbchmod600/etc/vsftpd/vusers.dbrm-f/etc/vsftpd/vusers.txt4.配置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 EOF5.修改配置文件
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 EOF6.创建用户配置文件目录和配置文件
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-Pftp_home_dir on setsebool-Pallow_ftpd_full_access on semanage fcontext-a-tpublic_content_rw_t"/var/ftp/shared(/.*)?"restorecon-Rv/var/ftp/shared配置防火墙
firewall-cmd--permanent--add-service=ftp firewall-cmd--reloadsystemctl start vsftpd systemctlenablevsftpd登录ftp
教师权限可以上传下载,新建和删除文件目录
学生权限可以上传下载,不可以新建和删除文件目录
