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 ...
随机推荐
- ftp反向代理配置
说明:源ftp在内网,访问在另一个内网,要求用户对真实ftp地址透明,且免密访问. 1.将ftp配置为被动模式,指定被动访问端口映射出来. // vsftp配置被动模式,列出主要配置 connect_ ...
- orcal解决锁表
1.查看历史运行纪录 select * from dba_jobs_running: 2查看锁住的sid和pid select s.sid,s.serial# fromv$session s wher ...
- ssh框架中的分页查询
ssh中的分页查询是比较常用的,接下来我用代码来介绍如何实现一个分页查询 首先建立一个Model用来储存查询分页的信息 package com.haiziwang.qrlogin.utils; imp ...
- IDEA创建maven各种原型项目汇总
1: internal -> appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型) 2: internal -> appfus ...
- maven将自己的springboot项目打包成jar包后,作为工具包引入其他项目,找不到jar中的类
将springboot项目打包成jar包,作为工具包导入项目后,找不到jar中的类. 原因是:springboot项目使用了自动的打包插件. 原先的插件配置: <build> <pl ...
- spring aop影响dubbo返回值问题解决
问题描述: dubbo服务已经注册,客户端调用提供者服务返回值为空.(考虑动态代理.aop的返回值影响,dubbo基于spring2.5.6.SEC03,本次开发使用的是spring4.3.8) 解决 ...
- 用DotNetDetour HOOK .net类库
https://github.com/bigbaldy1128/DotNetDetour ------------------------------------------------------- ...
- 定位网页元素、透明度、z-index、包裹性和破坏性
一.定位 position属性————规定元素的定位类型,即元素脱离文档流的布局,在页面的任意位置显示 也可以参见以前的总结 <—— 戳 static:默认值,没有定位 relative:相对定 ...
- 搜索框的测试checklist
一:简单搜索输入框测试用例1:不输入任何字符,点击搜索按钮,一般搜索出网站所有的信息 2:一般搜索输入框中的有文章显示,当鼠标点击时,文章消失 3:输入全角/半角中文字符(一个字符.超长字符.已经信息 ...
- Shell编程、part3
本节内容 1. shell流程控制 2. for语句 3. while语句 4. break和continue语句 5. case语句 6. shell编程高级实战 shell流程控制 流程控制是改变 ...