linux系统下FTP服务器的安装和配置
FTP是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。
PORT模式:

首先客户端开启一个非特权端口N(大于1023)与服务端21端口建立控制连接,再开启一个非特权端口N+1并监控此端口,客户端通过命令连接发送PORT命令,命令中包含客户端监听的数据连接端口N+1,服务端收到PORT命令后,会用数据端口20连接客户端N+1端口。
主动模式下,客户端监听的数据端口是随机端口,如果客户端建立了网络防火墙,server端的数据连接请求就会被屏蔽掉。
PASV模式:

被动模式下,客户端开启非特权端口N(大于1023)与服务器端21建立控制连接,再开启一个非特权端口N+1并监控此端口,客户端通过控制连接发送PAVS命令,服务器端收到给予响应,并打开一个数据端口(大于1023),客户端使用N+1端口与服务器的数据端口建立连接,服务器给予数据连接响应。
安装ftp
#rpm -qa vsftpd //查看是否已经安装
#yum install vsftpd -y //安装
#service vsftpd start //开启服务
#ftp 192.168.254.5(ip地址) //登录
响应码
也可以说是反馈码,每次进行操作都会反馈回一个数字开头的状态码。以下是各类代码信息:
1xx:信息
2xx:成功类代码
3xx:提示需要进一步操作类代码
4xx:客户端错误
5xx:服务端错误
配置ftp
配置文件/etc/vsftpd/vsftpd.conf
连接数限制:
max_clients=# //FTP服务器最大接入客户端数
max_per_ip=# //每个ip最大连接数
传输速率限制:
anno_max_rate=# //匿名用户最大传输速率
1、匿名用户:
用户名:ftp;密码为空;登录目录:/var/ftp。
anonymous_enable=YES //是否启用匿名用户
anon_upload_enable=YES //上传
anon_mkdir_write_enable=YES //创建目录
anon_other_write_enable=YES //删除
限制系统用户锁定在家目录:
2、系统用户:
用户名:本地用户;密码:用户密码;登录目录:用户家目录。
local_enable=YES //本地用户登录
write_enable=YES //上传、创建、删除
chroot_local_user=YES //限制所有
chroot_list_enable=YES //限制写入chroot_list文件中的用户
chroot_list_file=/etc/vsftpd/chroot_list //将需要限制用户写入此文件
/etc/vsftpd/ftpusers //文件中的系统用户将被禁止登录
3、虚拟用户
在/etc/vsftpd/下创建文本,奇数行为用户名,偶数行为密码;所有虚拟用户目录为一个系统家目录。
⑴、创建用户密码文本
#vim /etc/vsftpd/vsftpd_list
user1
redhat1
user2
redhat2
⑵、生成虚拟用户认证db文件
#db_load -T -t hash -f /etc/vsftpd/vsftpd_list /etc/vsftpd/vsftpd_list.db
⑶、编辑PAM文件
方法一、vi /etc/pam.d/vsftpd 内容全部注释掉,增加以下两句
auth required /lib(64)/security/pam_userdb.so db=/etc/vsftpd/vsftpd_list
account required /lib(64)/security/pam_userdb.so db=/etc/vsftpd/vsftpd_list
方法二、在/etc/pam.d/下创建新文件vsftpdauth(可自定义),将以上两句写入,然后编辑配置文件vsftpd.conf.
pam_service_name=vsftpdauth //改为你创建的文件名
⑷、创建一个系统用户,所有虚拟用户都被映射成此系统用户
#useradd -d /home/vftp -s /sbin/nologin virtual //用户名为virtual
#chmod 700 /home/vftp //设置权限
⑸、在配置文件中启用虚拟用户,增加以下参数:
guest_enable=YES //启用虚拟用户
guest_username=virtual //虚拟用户
⑹、重启FTP服务并测试虚拟用户登录
#service vsftpd restart
#ftp 192.168.254.5
⑺、对不同虚拟用户设置不同权限
① 设置配置文件vsftpd.conf.
添加用户配置文件目录设置:user_config_dir=/etc/vsftpd/vsftp_user_conf
② 创建用户配置文件目录
#mkdir /etc/vsftpd/vsftp_user_conf
③ 以用户名创建相应用户的配置文件
#touch /etc/vsftpd/vsftp_user_conf/user1
④ 编辑用户配置文件设置权限
#vim /etc/vsftpd/vsftp_user_conf/user1
local_root=/home/vftp/user1
anon_world_readable_only=NO //表示用户可以浏览FTP目录和下载文件
anon_upload_enable=YES //表示用户可以上传文件
anon_mkdir_write_enable=YES //表示用户有创建目录的权限
anon_other_write_enable=YES //表示用户具有文件改名和删除文件的权限
虚拟用户配置已完成
linux系统下FTP服务器的安装和配置的更多相关文章
- redis在windows和Linux系统下的下载、安装、配置
1.下载redis安装包 在redis的官网只有Linux系统下的安装包,微软的GitHub上有提供windows版本的redis安装包 redis中文网:http://www.redis.cn/ 微 ...
- Windows server 2008系统下FTP服务器的安装
一.在 Windows 服务器上安装 FTP 服务 1. 在"开始"菜单上,单击"管理工具",然后单击"服务器管理器". 2. 在" ...
- 基于Linux系统下Apache服务器的安装部署
企业中常用的web服务,用来提供http://(超文本传输协议). web系统是客户端/服务器模式的,所以应该有服务器和客户端里两个部分.常用的服务器程序时Apache,常用的客户端程序是浏览器.ww ...
- ubuntu16.04下ftp服务器的安装与配置
由于要将本地程序上传至云服务器中,所以需要给云服务器端安装ftp服务器.记录一下ftp的安装过程,以便以后使用.服务器端所用系统为Ubuntu16.04. 1. 安装ftp服务器, apt-get i ...
- Linux学习总结(21)——CentOS7环境下FTP服务器的安装和配置
1. 安装vsftpd #安装vsftpd yum install -y vsftpd #设置开机启动 systemctl enable vsftpd.service # 重启 service vsf ...
- 红帽(Red Hat Linux)下SVN服务器的安装与配置
转:http://www.cnblogs.com/xd502djj/archive/2011/01/21/1941404.html 第一章 安装 1. 采用源文件编译安装.源文件共两个,为:subve ...
- Linux系统上Nginx服务器的安装与配置
前言: 详细步骤移步菜鸟教程 一. 安装Nginx,注意虚拟机与宿主机的网络连通性 l 安装编译工具及库文件(zlib库. ssl) yum -y install make zlib zlib-de ...
- linux系统下svn服务器操作命令
linux系统下svn服务器操作命令 .输出指定文件或URL的内容. svncat 目标[@版本]…如果指定了版本,将从指定的版本开始查找. svncat -r PREV filename > ...
- Linux系统下(x64)安装jdk 1.6(jdk-6u45-linux-x64.bin)
Linux系统下(x64)安装jdk 1.6(jdk-6u45-linux-x64.bin) 一,查看是否安装jdk: # rpm -qa | grep jdk 或者 #rpm -q jdk 或者 # ...
随机推荐
- Day7 Ubantu学习(一)
Linux是多用户操作系统 Ubantu学习参考网址:https://www.cnblogs.com/resn/p/5800922.html 1.虚拟机网络类型的理解 bridged(桥接模式) : ...
- ElasticSearch聚合
前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregations),聚合功能为ES注入了统计分析的血统,使用户在面对大数据提取统计指标时变得游刃有余.同样的工作,你在 ...
- Servlet 转发请求与重定向,以及路径问题
转发请求 当一个servlet接收到请求后,如果需要将请求转发给另外一个servlet或者jsp文件,可使用下面这种方法: package cn.ganlixin.servlet; import ja ...
- 【学习总结】Git学习-参考廖雪峰老师教程一-Git简介
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- Memcached 集群架构与memcached-session-manager
Memcached 集群架构方面的问题_知识库_博客园https://kb.cnblogs.com/page/69074/ memcached-session-manager配置 - 学习中间件调优管 ...
- C# 往Datatable中添加新行的步骤
以一个实例说明 //录入年份绑定 public void YearList(FineUIPro.DropDownList ddlYear) { //年份从15年到当前年//起止年份 ; int yea ...
- HashMap深度解析(转载)
原文地址:http://blog.csdn.net/ghsau/article/details/16890151 实现原理:用一个数组来存储元素,但是这个数组存储的不是基本数据类型.HashMap实现 ...
- Baby-Step-Giant-Step 很酷的算法
Baby-Step-Giant-Step BSGS算法用于解决形如: A ^ x ≡ B ( mod C ) 的问题. 学这个算法前需要具备以下知识:快速幂取模.扩展欧几里 ...
- Eclipse的一个“bug”
标题之所以打上双引号,是因为暂时不知道怎么确定. 一个 .java文件里有两个类:public Bath:Soap.它们都有一个main()方法. 从命令行单独访问任意一个类的main()方法,都没毛 ...
- 从Oracle数据库中查询前几个月数据时需要注意的一些问题
在最近的一个项目中,有一个需求就是要查询数据库中前几个月的历史数据,但是由于自己考虑不全面造成了程序的bug,现在将这一块好好作一个总结,希望以后不再犯这种很低级的错误,首先贴出查询中用到的一个子函数 ...