某高校为方便校内师生下载使用相关软件和文档,打算部署 ftp 服务器, 要求如下:
- 开放 anonymous 登录;
- 文件传输带宽限制为 1Mbytes/second;
- 数据连接过程超过 60s 无响应,则强制客户端断线;
- 当 anonymous 超过 10 分钟无操作,强制断线;
- 最大同时上线人数为 50 人,且同一 IP 最大联机数量为 5 人
一、搭建 vsftpd 仅支持匿名访问
1.安装 vsftpd
[root@DJL djl]# yum list vsftpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安装的软件包
vsftpd.x86_64 3.0.2-29.el7_9 updates
[root@DJL djl]# yum install vsftpd.x86_64
已安装:
vsftpd.x86_64 0:3.0.2-29.el7_9
完毕!
[root@DJL djl]#
2.配置 vsftpd
vsftpd 安装后,配置文件位于/etc/vsftpd 目录下,进入/etc/vsftpd 目录,备份vsftpd.conf
[root@DJL djl]# cd /etc/vsftpd/
[root@DJL vsftpd]# cp vsftpd.conf vsftpd.conf.bak
[root@DJL vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@DJL vsftpd]# grep -v '#' vsftpd.conf.bak > vsftpd.conf //去除注释后写入vsftpd.conf
[root@DJL vsftpd]# vim vsftpd.conf
3.修改 vsftpd.conf
#Anonymous user settings //匿名相关用户设置
anonymous_enable=YES
anon_max_rate=100000 //匿名最大传输速度1MB/s
data_connection_timeout=60 //数据连接超时为60s
idle_session_timeout=600 //无操作超时10分钟
max_clients=50 //最大连接数
max_per_ip=5 //每个ip最大连接数
anon_mkdir_write_enable=yes //允许匿名用户创建文件;前提是 write_enable 被设置
anon_upload_enable=yes //允许匿名用户上传文件
anon_other_write_enable=yes //允许匿名用户其他写入权限
#Entity user settings //实体用户相关设置
local_enable=no //关闭实体用户登陆
local_umask=022
#Server environment settings //服务器环境相关设置
write_enable=YES //允许写入
banner_file=/etc/vsftpd/welcome.txt //欢迎信息文件
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=yes
listen_ipv6=no
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
~
4.anonymous登陆后文件目录配置
anonymous 登录后,取得的是 ftp 用户的身份。ftp 用户的家目 录在/var/ftp 目录下。可以在该目录新建一个 upload,并修改为 ftp 所有者。
[root@DJL ftp]# cd /var/ftp/
[root@DJL ftp]# mkdir upload
[root@DJL ftp]# chown -R ftp:ftp upload //更改文件用户为ftp同时修改文件所属组为ftp
[root@DJL ftp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 6月 10 00:15 pub
drwxr-xr-x. 2 ftp ftp 6 8月 12 05:06 upload
[root@DJL ftp]#
5.启动服务并测试
- 关闭防火墙和selinux;
[root@DJL djl]# systemctl stop firewalld.service
[root@DJL djl]# setenforce 0
- 启动服务
[root@DJL djl]# systemctl restart vsftpd
[root@DJL djl]# systemctl status vsftpd
评论 (0)