项目实践-vsftpd+mysql虚拟用户-使用总结

-----------业务需求-------

1、需求1: 数据共享。用户a用 ftp提交文件,其他用户通过ftp可以下载文件。到期不让用户下载文件。

2、需求2: 数据汇交。不同用户连ftp将自己汇交的文件提交到自己的目录,然后指定一个用户连ftp去收集那些用户的文件。

 

-----------实现方案-----------

用vsftpd +MySQL虚拟用户实现

 

----------踩坑之路,十分心酸-----

在弄vsftpd的时候,遇到了很多问题,都是遇到一个,百度查阅一个,解决一个。

 

----------vsftpd安装------

     大概是三步。

    1.安装mysql。建张存放虚拟用户的表ftpuser,存放虚拟用户的账号密码。密码可以明文、password、md5值,跟pam.d文件配置对应。

    2.安装vsftpd。安装完,/etc/vsftpd/vsftpd.conf要配置用户权限文件夹,pam.d模块等信息。

    3.安装vsftpd MySQL pam.d 的安全模块。配置mysql虚拟用户表的相关信息。

 

百度很多安装的文章(搜索关键字 :vsftpd mysql虚拟用户),找了大概的一篇(因为也不是我安装的基础环境,所以这边细的不懂)

https://www.cnblogs.com/lvzhenjiang/articles/14406450.html

 

----------开发思路与步骤------

    下面步骤都是在java代码里实现(不是直接在linux那边操作)。

    1.java代码里用root用户去创建用户权限文件夹,以及创建用户权限文件。(百度有相关的java操作linux的帮助类)

    2.根据读写需求,写虚拟用户的权限文件内容。往mysql 建的用户表写用户账号密码。只有mysql里账号密码对了+有权限文件,以及对应的权限,用户才能登陆上分配给他对应的目录。

    3. java代码里,设置创建的ftp文件夹的归属用户,第一步创建的是root用户的,要改成虚拟用户映射用户(比如说用户是 ftpuser)以及组的权限,让文件夹变成这个用户和组的,才有权限写文件。

      修改目录以及子子目录的归属。chown -R ftpuser:ftpuser /data/ftpuser

        (chown -R  用户:组  目录)

    4. 设置用户不能访问ftp。相当于说是 没有权限,就是把用户从mysql  ftpuser表数据里删了。没删权限文件跟提交的文件。

 

--------遇到的问题-------

 

-----Ftp登陆不上----

Mysql密码加不加密,就看pam.d加密函数与mysql版本的加密函数是否一样,一样才有用。

-------

问题:输入ftp地址-用户密码后转到家目录报错。(家目录,指的是分配给他的路径目录)

错误:

响应: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

错误: 严重错误: 无法连接到服务器

解决:

用户配置加allow_writeable_chroot=YES

 

---------

问题:文件上传-修改出错

错误:ftp上传(553 Could not create file.) 修改(550 Rename failed.)

 解决:把ftp的路径(比如:/data/ftpuser),目录赋给ftp的虚拟用户ftpuser。(在root用户登录的情况,赋予opt目录给liuhai这个用户权限)。

 没给之前,文件夹归属显示的是root root。设置之后,是ftpuser的。

chown -R ftpuser:ftpuser /data/ftpuser

 

--------

问题:自己能上传下载文件,其他人不能下载。

原因:因为linux对文件权限有控制,需要设置文件的属性,支持其他用户操作。

解决:

因为是每个用户提交的文件,所以不能也不现实说用户提交一个文件,然后通过Linux命令去修改属性。

vsftpd有个控制虚拟用户对文件的权限 配置anon_umask=022 后面这个数字表示linux.权限777-022=755,755的权限。

 

 

 

-----vsftpd 虚拟用户-写的--权限--------

# 虚拟用户根目录(家目录)

local_root=/data/ftpuser/test

# 允许写入

write_enable=YES

# 允许下载

download_enable=YES

# 允许上传

anon_upload_enable=YES

# 允许新建文件夹

anon_mkdir_write_enable=YES

# 允许删除_修改等操作

anon_other_write_enable=YES

# 允许在根目录下操作。

allow_writeable_chroot=YES

# 虚拟用户的权限,这样写出来的文件其他人才能下载。linux的文件属性

anon_umask=022

 

------linux chown详解-------

 

chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。

1.命令格式:

chown [选项]...[所有者][:[组]]文件...

2.命令功能:

  通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。

3.命令参数:

  必要参数:

-c显示更改的部分的信息

-f忽略错误信息

-h修复符号链接

-R处理指定目录以及其子目录下的所有文件

-v显示详细的处理信息

-deference作用于符号链接的指向,而不是链接文件本身

  选择参数:

--reference=<目录或文件>把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组

--from=<当前用户:当前群组>只有当前用户和群组跟指定的用户和群组相同时才进行改变

--help显示帮助信息

--version显示版本信息

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值