FTP服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FTP服务相关的知识,希望对你有一定的参考价值。

1.什么是FTP 服务器?
FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。 基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
在 FTP 的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)
2. 什么是Vsftpd?
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。
3.安装Vsftpd
备注:自己在家做时,需要自己配好Yum仓库
yum install vsftpd -y
systemctl start vsftpd
systemctl stop firewalld
systemctl enable vsftpd
lftp ip
技术图片

能登陆并且显示,表示安装成功
vsftpd文件信息
/var/ftp ##默认发布目录
/etc/vsftpd ##配置目录

客户端访问时, 用户身份可以分为:
1). 匿名用户:没有指定用户身份, ftp身份实现从服务器上传和下载文件;
2). 本地用户: -u指定用户身份,用户是服务器端的用户;
3). 虚拟用户: -u指定用户身份,但是服务器端并不存在该用户(id username)
没有指定用户身份
4.vsftpd服务的配置参数
#安装完后,有/etc/vsftpd/vsftpd.conf 文件,是 vsftp 的配置文件。
1)匿名用户设定
anonymous_enable=YES|NO ##匿名用户登陆限制
技术图片

匿名用户上传
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub

技术图片
技术图片
匿名用户家目录修改
anon_root=/direcotry

匿名用户建立目录
anon_mkdir_write_enable=YES|NO
技术图片
匿名用户上传文件默认权限修改
anon_umask=xxx

技术图片>匿名用户下载
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载

匿名用户删除
anon_other_write_enable=YES|NO

匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
chown_uploads_mode=0644

最大上传速率
anon_max_rate=102400
技术图片

最大链接数
max_clients=2

2)本地用户设定
local_enable=YES|NO ##本地用户登陆限制
write_enable=YES|NO ##本地用户写权限限制
技术图片

本地用户家目录修改
local_root=/directory

本地用户上传文件权限
local_umask=xxx

限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
技术图片
用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

技术图片
用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

技术图片

限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
技术图片
用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp

ftp虚拟用户的设定
0). 准备

    yum clean all
    yum repolist 
    yum install vsftpd -y
    systemctl  start vsftpd
    systemctl  enable  vsftpd
   systemctl  stop firewalld
   systemctl  disable firewalld
    getenforce 
    setenforce  0
    getenforce 
   vim /etc/sysconfig/selinux 
    **SELINUX=disabled**

1). 创建虚拟帐号身份的文件(注意: 不要出现空行或者多余的空格)
vim /etc/vsftpd/loginusers ##文件名称任意
ftpuser1
123
ftpuser2
123
ftpuser3
123

2). 对用户帐号和密码进行加密
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
chmod 600 /etc/vsftpd/loginusers*
技术图片
3). 编辑帐号和密码处理的库文件
vim /etc/pam.d/ckvsftpd ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
技术图片
4). 配置vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd # 虚拟用户信息认证文件名称
guest_enable=YES # 虚拟用户开启
技术图片
虚拟帐号身份指定)
guest_username=ftpuser
chmod u-w /home/ftpuser

虚拟帐号家目录独立设定)
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER
user_sub_token=$USER
技术图片
mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/ftpuser{1..3}

虚拟帐号配置独立)
案例实现目标:
1). ftpuser1用户上传和下载文件限速;
2). ftpuser2用户上传和下载文件不限速, 并且可以上传文件;

vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/conf.d
mkdir -p /etc/vsftpd/conf.d

vim /etc/vsftpd/conf.d/ftpuser1
在此文件中设定配置文件中的所有参数,此文件的优先级高
anon_max_rate=1024

vim /etc/vsftpd/conf.d/ftpuser2
write_enable=YES
anon_upload_enable=YES

mkdir /ftp/ftpuser2/upload/
chown ftpuser /ftp/ftpuser2/upload/
systemctl restart vsftpd

测试限速
**
server:
dd if=/dev/zero of= /ftp/ftpuser1/hello1 bs=1M count=100
dd if=/dev/zero of=/ftp/ftpuser2/hello2 bs=1M count=100
****client:
lftp 172.25.0.11 -u ftpuser1

get hello1

lftp 172.25.0.11 -u ftpuser2

get hello2

****测试文件上传:
lftp 172.25.0.11 -u ftpuser2

cd upload/
put /etc/passwd

以上是关于FTP服务的主要内容,如果未能解决你的问题,请参考以下文章

一句python代码搭建FTP服务

如何在Linux中部署ftp服务只需要代码

FTP服务器文件上传的代码实现

Java上传文件FTP服务器代码

通过带有PHP代码的Web服务器将应用程序上的本地文件上传到FTP服务器

Java网络编程(读书笔记)