部署ftp服务(vsftp+nginx)

部署ftp服务(vsftp+nginx)

背景

领导说,要搞个ftp服务,方便各个部门的人下载资源,我觉得确实有这个必要,速度给他搞一个。

分析需求

1.各个部门一个账号和密码

2.有个公共的文件夹public,每个账号都能够访问

3.各自部门的账号,只能下载自己文件夹下的文件和public文件夹下的文件,看不到其他用户的目录

4.要能通过浏览器下载

5.前10m不受限制,之后限制下载速度为2m/s

规划

/app/vsftpd/public(公共文件夹)

/app/vsftpd/u01(u01用户的文件夹)

/app/vsftpd/u02(u02用户的文件夹)

/app/vsftpd/u03(u03用户的文件夹)

部署

1.安装vsftpd+nginx

# 安装vsftpd和nginx(nginx也可以选择自己编译)

sudo yum install -y vsftpd nginx

# 安装ftp客户端用于测试

sudo yum install -y ftp

# 启动服务并设置开机自启

sudo systemctl start vsftpd

sudo systemctl enable vsftpd

sudo systemctl start nginx

sudo systemctl enable nginx

# 开放防火墙端口

sudo firewall-cmd --permanent --add-port=21/tcp

sudo firewall-cmd --permanent --add-service=http

sudo firewall-cmd --reload

2.创建目录结构和用户

# 创建主目录结构

sudo mkdir -p /app/vsftpd/{public,u01,u02,u03}

# 创建用户并设置主目录

sudo useradd -d /app/vsftpd/u01 -s /sbin/nologin u01

sudo useradd -d /app/vsftpd/u02 -s /sbin/nologin u02

sudo useradd -d /app/vsftpd/u03 -s /sbin/nologin u03

# 设置密码(交互式,按提示设置密码)

sudo passwd u01

sudo passwd u02

sudo passwd u03

# 设置目录权限

sudo chown u01:u01 /app/vsftpd/u01

sudo chown u02:u02 /app/vsftpd/u02

sudo chown u03:u03 /app/vsftpd/u03

sudo chmod 755 /app/vsftpd/public

sudo chmod 755 /app/vsftpd/u0{1,2,3}

# 创建公共目录的符号链接到各用户目录

sudo ln -s /app/vsftpd/public /app/vsftpd/u01/public

sudo ln -s /app/vsftpd/public /app/vsftpd/u02/public

sudo ln -s /app/vsftpd/public /app/vsftpd/u03/public

3.配置VSFTPD

[root@mail public]# cat /etc/vsftpd/vsftpd.conf |grep -v ^#|grep -v ^$

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

userlist_enable=YES

userlist_deny=NO

userlist_file=/etc/vsftpd/user_list

tcp_wrappers=YES

chroot_local_user=YES

allow_writeable_chroot=YES

pasv_min_port=40000

pasv_max_port=45000

#local_root=/app/vsftpd/$USER

#限制VSFTP服务器同时接受的最大总连接数为50个

max_clients=50

#限制单个IP地址最多只能建立5个并发连接

max_per_ip=5

4.创建用户列表文件

echo -e "u01\nu02\nu03" | sudo tee /etc/vsftpd/user_list

5.重启vsftp服务

sudo systemctl restart vsftpd

6.配置nginx.conf

if ($request_method !~ ^(GET|HEAD|POST)$ ) {

return 405;

}

server {

listen 80;

server_name your-server-ip-or-domain;

location /files/ {

#client_max_body_size 500M;

# 前10MB不限制,之后限制为2M/s

limit_rate_after 10m;

limit_rate 2048k;

alias /app/vsftpd/$remote_user/;

autoindex on;

autoindex_exact_size off;

autoindex_localtime on;

charset utf-8;

auth_basic "Restricted Access";

auth_basic_user_file /app/nginx/conf/ftp.passwd;

}

}

7.创建认证文件(为Web访问设置密码)

sudo yum install -y httpd-tools

htpasswd -c /app/nginx/conf/ftp.passwd u01

htpasswd -c /app/nginx/conf/ftp.passwd u02

htpasswd -c /app/nginx/conf/ftp.passwd u03

如果您不想安装 httpd-tools,也可以使用 OpenSSL 创建密码文件:

# 创建 u01 的密码(会提示输入密码)

printf "u01:$(openssl passwd -crypt)\n" | sudo tee /app/nginx/conf/ftp.passwd

# 添加 u02

printf "u02:$(openssl passwd -crypt)\n" | sudo tee -a /app/nginx/conf/ftp.passwd

# 添加 u03

printf "u03:$(openssl passwd -crypt)\n" | sudo tee -a /app/nginx/conf/ftp.passwd

8.检查并重启nginx

sudo nginx -t

sudo systemctl restart nginx

9.验证

http://xxx.xxx.xxx.xxx:{port}/files/

后续新增用户配置

比如新增用户u05

# 创建主目录结构

mkdir -p /app/vsftpd/u05

# 创建用户并设置主目录

sudo useradd -d /app/vsftpd/u05 -s /sbin/nologin u05

sudo passwd u05

# 设置目录权限

sudo chown u05:u05 /app/vsftpd/u05

sudo chmod 755 /app/vsftpd/u05

# 创建公共目录的符号链接到各用户目录

ln -s /app/vsftpd/public /app/vsftpd/u05/public

# 创建用户列表文件

echo "u05" >> /etc/vsftpd/user_list

# 重启vsftp服务

sudo systemctl restart vsftpd

# 设置用户在web页面上的访问密码(建议使用强算法)

htpasswd -B -C 12 /app/nginx/conf/ftp.passwd u05 # bcrypt, cost=12

相关推荐

春兰空调通用遥控器
365bet哪个国家的

春兰空调通用遥控器

丰城旅游必去十大景点,丰城好玩的地方推荐
365bet哪个国家的

丰城旅游必去十大景点,丰城好玩的地方推荐

【UE4】UE4蓝图 文本自动换行
365bet哪个国家的

【UE4】UE4蓝图 文本自动换行

如何原谅某人(宽恕的11个步骤以及如何继续前进)
365彩票下载1.0.0老版本

如何原谅某人(宽恕的11个步骤以及如何继续前进)

深入解析:如何破解Photoshop的使用限制与技巧
日博365哪个是真的

深入解析:如何破解Photoshop的使用限制与技巧

公司库存现金可以备多少?有讲究吗
365bet哪个国家的

公司库存现金可以备多少?有讲究吗