环境 centos7

1.开启vsftpd服务

2.检查vsftpd服务是否开启

3.添加虚拟用户口令文件

vi etc/vsftpd/vuser.txt

4.生成虚拟用户口令认证文件

如果没有db_load口令认证命令,则需要安装

yum -y install db4-utils

如果有,那么直接把文档转变为认证文件

db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

5.编辑vsftpd的PAM认证文件

vi /etc/pam.d/vsftpd

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser

#注释掉其他行,加入此两行即可

#注释掉其他行,可以禁止本地用户登录,因为本地用户登录时的验证依然依赖这个文件

6.建立本地映射用户并设置宿主目录权限

useradd -d /home/vftproot -s /sbin/nologin vuser

#此用户不需要登录,只是映射用户 #用户名必须和下一步配置文件中一致

然后查看该目录的权限

发现权限是700,也就是说只有所有者才能rwx权限,其他人都没有权限,所以需要修改该目录下的权限,否则其他用户无法访问该目录

7.修改配置文件

vi /etc/vsftpd/vsftpd.conf

加上以下配置

#开启虚拟用户

guest_enable=YES

#FTP虚拟用户对应系统用户

guest_username=vuser

#PAM认证文件(默认存在)

pam_service_name=vsftpd

8.

调整虚拟用户权限

vi /etc/vsftpd/vsftpd.conf

#关闭匿名用户登陆,更加安全(不影响虚拟用户登陆

) anonymous_enable=NO

#给虚拟用户设定权限,允许所有虚拟用户上传

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

9.重启vsftpd服务并测试
service vsftpd restart

在测试过程中,如果遇到了530失败,则可能是pam验证文件路径错误,可以用find命令查找pam_userdb.so验证文件,然后从新修改vsftpd文件,改为正确的路径

而遇到远征主机关闭连接,则可能是防火墙的问题,需要运行一下命令

关闭防火墙 iptables -F

关闭SELinux setenforce 0(用sestatus查看如果发现selinux还是enable状态的话,则需要修改etc/selinux/config 中的enforcing 模式改为disabled, 然后重启)

如果遇到这种情况的话,是因为如果你开启了chroot_local_user=YES这个选项把用户限制在了主目录(用户不能跳出主目录),从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了。

果然,因为我们是该目录的所有者,拥有7权限,所以只要我们使用chown命令把所有者改成root就能登录了

因为我们在该目录下没有写权限,所以是只能下载文件而不能上传文件的

解决方法:在根目录下创建一个755所属自己的目录,在该目录下进行上传文件和下载

成功上传!

10.为每个虚拟用户建立自己的配置文件,单独定义权限

之前定义了两个虚拟用户,一个是test1,一个是test2,现在来单独配置一下test1的独立配置

(1)修改配置文件

vi /etc/vsftpd/vsftpd.conf

#指定保存虚拟用户配置文件的目录

user_config_dir=/etc/vsftpd/vusers_dir

(2)手工建立目录

mkdir /etc/vsftpd/vusers_dir

(3)为每个虚拟用户建立配置文件

vi /etc/vsftpd/vusers_dir/test1(虚拟用户名),加入一下权限

#允许此用户上传

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

#给虚拟用户指定独立的上传目录

local_root=/tmp/test1

然后登陆测试

独立配置之后,使用test1登陆就会来到配置的目录下(/tmp/test1/)

因为和上面的那些操作几乎是一样的,这里就不演示了,如果不能登陆成功,记得检查根目录是否具有写权限,然后改掉写权限就可以了,最重要的一点就是配置不要错了,配置文件不能存在空格,否则也会报错!

ftp建立虚拟用户实现文件上传和下载的更多相关文章

  1. Java实现FTP文件上传与下载

    实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 package com.cl ...

  2. 利用windows系统ftp命令编写的BAT文件上传[转]

    利用windows系统ftp命令编写的BAT文件上传[转] 利用windows系统ftp命令编写的BAT文件上传[转] 在开发中往往需要将本地的程序上传到服务器,而且用惯了linux命令的人来说.在w ...

  3. java代码实现ftp服务器的文件上传和下载

    java代码实现文件上传到ftp服务器: 1:ftp服务器安装: 2:ftp服务器的配置: 启动成功: 2:客户端:代码实现文件的上传与下载: 1:依赖jar包: 2:sftpTools   工具类: ...

  4. 【ABAP系列】SAP ABAP 实现FTP的文件上传与下载

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 实现FTP的文 ...

  5. Android文件上传与下载

    文件上传与下载 文件上传 -- 服务端 以Tomcat为服务器,Android客服端访问Servlet,经Servlet处理逻辑,最终将文件上传,这里就是简单模拟该功能,就将文件上传到本机的D:\\u ...

  6. Nginx集群之WCF大文件上传及下载(支持6G传输)

    目录 1       大概思路... 1 2       Nginx集群之WCF大文件上传及下载... 1 3       BasicHttpBinding相关配置解析... 2 4       编写 ...

  7. win7下利用ftp实现华为路由器的配置文件上传和下载

    win7下利用ftp实现华为路由器的配置文件上传和下载 1.  Win7下ftp的安装和配置 (1)开始—>控制面板—>程序—>程序和功能—>打开或关闭Windows功能 (2 ...

  8. 用FileZilla服务器端和客户端实现本机与虚拟机之间文件上传和下载

    1. FileZilla简介 2.准备工作3.安装 FileZilla Server和配置3.1.问题及解决方法3.2.添加目录3.3.测试FIP4.安装FileZilla Client5.连接服务器 ...

  9. javaWeb学习总结——文件上传、下载

    目录 1.文件上传环境搭建 2.文件上传代码实现 3.关于下载 @ 嘿,熊dei,你不得不知道在Web开发中,文件上传和下载功能是非常常用的功能,关于文件上传,浏览器上传[文件以流的形式传输]--&g ...

随机推荐

  1. TCP定时器 之 延迟确认定时器

    TCP在收到数据段但是无需马上确认时设定,如果在超时时间之内有数据要发送到对端,则确认会随着数据一起发送,即捎带ACK,如果达到超时时间则执行定时器回调立即发送ack: 启动定时器: 延迟确认定时器调 ...

  2. weblogic域,管理服务器,受管服务器,集群和机器的基本知识

    1.域(Domain) •它是什么? –是一个逻辑上管理的WebLogic Server组,这些组从管理上当作一个整体来操作 •域里面有什么? –服务器 –服务器集群 –机器 •规则: –同一个域中的 ...

  3. Netem参数说明

    Netem参数说明 本文主要内容来自Linux基金会Wiki网站Netem文档,点击这里访问原文 netem通过模拟广域网的特性为测试协议提供网络仿真功能.当前版本模拟可变延迟,丢失,重复和重新排序. ...

  4. ForkJoin使用

    一.Fork Join 分而治之的办法 JDk为Fork/Join框架提供了很好的支持,我们想要用这个算法首先得创建一个Fork/Join任务,在JDK中这个任务就叫做:ForJoinTask,只要继 ...

  5. Altera DDR2 IP核学习总结1-----------SRAM,DRAM

    SRAM,DRAM,SDRAM和DDR2这些芯片详解网上铺天盖地的各种资料都有,这里只是根据个人习惯做一下总结,方便记忆. 详细资料可以参考https://wenku.baidu.com/view/3 ...

  6. 华为HCNA乱学Round 2:路由基础

  7. mysql——单表查询——分组查询——示例

    一.基本查询语句 select的基本语法格式如下: select 属性列表 from 表名和视图列表 [ where 条件表达式1 ] [ group by 属性名1 [ having 条件表达式2 ...

  8. AppDomain介绍

    一.建立控制台项目 二.更改Program为ADSetp 三.去掉命名空间AppDomain.CurrentDomain 四.贴代码 using System; using System.IO; us ...

  9. CentOS7安装配置MariaDB(mysql)数据主从同步

    CentOS7安装MariaDB并配置主从同步 环境声明: 防火墙firewalld及SElinux均为关闭状态 主库节点:192.168.0.63 从库节点:192.168.0.64 配置主库节点: ...

  10. React同构起步

    React同构从0到1 前言 如果你想快速做react同构的新项目建议你去了解next.js等成熟框架,本教程仅限于想了解如何从0开始实现一个同构环境过程的同学,对于想改造现有spa项目的同学也很有帮 ...