ftp建立虚拟用户实现文件上传和下载
环境 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建立虚拟用户实现文件上传和下载的更多相关文章
- Java实现FTP文件上传与下载
实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 package com.cl ...
- 利用windows系统ftp命令编写的BAT文件上传[转]
利用windows系统ftp命令编写的BAT文件上传[转] 利用windows系统ftp命令编写的BAT文件上传[转] 在开发中往往需要将本地的程序上传到服务器,而且用惯了linux命令的人来说.在w ...
- java代码实现ftp服务器的文件上传和下载
java代码实现文件上传到ftp服务器: 1:ftp服务器安装: 2:ftp服务器的配置: 启动成功: 2:客户端:代码实现文件的上传与下载: 1:依赖jar包: 2:sftpTools 工具类: ...
- 【ABAP系列】SAP ABAP 实现FTP的文件上传与下载
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 实现FTP的文 ...
- Android文件上传与下载
文件上传与下载 文件上传 -- 服务端 以Tomcat为服务器,Android客服端访问Servlet,经Servlet处理逻辑,最终将文件上传,这里就是简单模拟该功能,就将文件上传到本机的D:\\u ...
- Nginx集群之WCF大文件上传及下载(支持6G传输)
目录 1 大概思路... 1 2 Nginx集群之WCF大文件上传及下载... 1 3 BasicHttpBinding相关配置解析... 2 4 编写 ...
- win7下利用ftp实现华为路由器的配置文件上传和下载
win7下利用ftp实现华为路由器的配置文件上传和下载 1. Win7下ftp的安装和配置 (1)开始—>控制面板—>程序—>程序和功能—>打开或关闭Windows功能 (2 ...
- 用FileZilla服务器端和客户端实现本机与虚拟机之间文件上传和下载
1. FileZilla简介 2.准备工作3.安装 FileZilla Server和配置3.1.问题及解决方法3.2.添加目录3.3.测试FIP4.安装FileZilla Client5.连接服务器 ...
- javaWeb学习总结——文件上传、下载
目录 1.文件上传环境搭建 2.文件上传代码实现 3.关于下载 @ 嘿,熊dei,你不得不知道在Web开发中,文件上传和下载功能是非常常用的功能,关于文件上传,浏览器上传[文件以流的形式传输]--&g ...
随机推荐
- 6、kubernetes资源清单之Pod控制器190714
一.Pod控制器的类别 ReplicationController:早期唯一的控制器,已废弃 ReplicaSet:控制Pod满足用户期望副本:标签选择器选择由自己管理的Pod副本:Pod资源模板完成 ...
- 190707Python-Redis
一.Redis的简单使用 Redis操作模式 # Author:Li Dongfei import redis r = redis.Redis(host='192.168.56.7', port=63 ...
- P2118 比例简化
P2118 比例简化 题解 这题考虑暴力枚举,枚举1~L的两个数 反正数据也很小 代码 #include<bits/stdc++.h> using namespace std; int a ...
- python - 函数any() 和 all() 的区别
转自:https://www.cnblogs.com/nulige/p/6128816.html any()与all()函数的区别: any是任意,而all是全部. 版本:该函数适用于2.5以上版本, ...
- 转载-Mysql主主复制架构配置
Mysql主主复制架构配置 转载:原始出处 http://luoweiro.blog.51cto.com/2186161/658550MySQL主主复制结构区别于主从复制结构.在主主复制结构中,两台服 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_1 AOP的概念
- Django表单集合Formset的高级用法
Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息.今天小编我就介绍下Djang ...
- python学习之那些由print引起的困惑
该文索所起之因:在练习列表的操作时,要输出一波操作后的列表,但是一直让本人耿耿于怀的时下边的这个现象: 红色框框里是字符串,黄色框框里是列表,同样是只对一个元素进行的操作,为啥输出时字符串是作为一个整 ...
- Matlab学习笔记0—课程导入
0,Matlab语言的介绍 1.什么叫计算? 在汉语中,“计算”一词的含义: 谋划 ,考虑 , 算计.随着电子计算机的产生与应用,人们对“计算”的理解发生了很大的变化. (1) ...
- 意想不到的JavaScript(每日一题2)
问题一: 答案: 解析: