本文由ilanniweb提供友情赞助,首发于烂泥行天下

想要获得更多的文章,可以关注我的微信ilanniweb。

一、实际问题

在使用vsftpd过程中,我们会经常发现vsftpd在默认情况下一个用户(无论是系统用户还是虚拟用户)只能拥有一个目录,一般是根目录。

如果此时再要向该用户添加其它目录的话,比如系统的其他目录也需要此用户访问,那么就无法直接添加了。

vsftpd不像FileZilla_Server等类似的ftp服务器软件一样可以直接给用户添加多目录,如下:

所以我们只能借助其他方式实现这个功能,在此我们使用的是mount --bind命令。

注意:mount --bind命令存在linux内核2.4版本以后的linux系统中。

二、解决方法

要想把vsftpd一个用户添加多个目录的话,我们可以通过mount --bind命令来达到要求。

mount --bind命令其实就是一个挂载命令,它的主要作用是将一个目录中的内容挂载到另一个目录上。

有关mount --bind命令的使用,我们可以通过查看mount的帮助文档获得。如下:

man mount

根据权限的不同,我们把vsftpd的这个要求分为可读写和只读这两种情况,下面分别介绍下。

PS:以下实验环境均是基于《烂泥:ubuntu下vsftpd虚拟用户配置》这篇文章的环境进行。

当然这个vsftpd单用户多目录的功能在ubuntu和centos均是可以使用的。

vsftpd的虚拟用户为ailanni,其对应的系统用户为wangxy。

2.1 可读写挂载

现在要求新建一个目录/write,ailanni用户要对/write目录具有可读写权限。

首先创建/write目录,并修改所属的用户及用户组为wangxy系统用户。如下:

sudo mkdir /write

sudo chown wangxy:wangxy -R /write/

因为虚拟用户ailanni登录到vsftpd要看到write这个目录,所以需要我们在ailanni用户的根目录下也创建一个write目录并修改所属的用户及用户组为wangxy系统用户。

sudo mkdir /www/write

sudo chown wangxy:wangxy -R /www/write/

以上相关的目录创建完毕后,现在我们来通过mount --bind命令进行挂载。如下:

sudo mount --bind /write/ /www/write/

mount

上述命令中sudo mount --bind /write/ /www/write/命令的意思是把/write/目录挂载到/www/write/目录下。

通过上图,我们可以很明显的看到/write/已经挂载到了/www/write/下,并且是可读写挂载的。

以上命令在服务器重启后是不会自动执行的,如果要使上述命令自动进行挂载,我们可以把上述命令放在/etc/fstab或者/etc/rc.local文件中。

放在/etc/fstab文件中,形式如下:

sudo vi /etc/fstab

/write/ /www/write/ none bind 0 0

放在/etc/rc.local文件中,形式如下:

sudo vi /etc/rc.local

mount --bind /write/ /www/write/

2.2 只读挂载

现在要求新建一个目录/readonly, ailanni用户要对/readonly目录具有只读权限。

首先创建readonly目录,并修改所属的用户及用户组为wangxy系统用户。如下:

sudo mkdir /readonly

sudo chown wangxy:wangxy -R /readonly/

因为虚拟用户ailanni登录到vsftpd要看到readonly这个目录,所以需要我们在ailanni用户的根目录下也创建一个readonly目录并修改所属的用户及用户组为wangxy系统用户。

sudo mkdir /www/readonly

sudo chown wangxy:wangxy -R /www/readonly/

以上相关的目录创建完毕后,现在我们来通过mount --bind命令进行挂载。如下:

sudo mount --bind /readonly/ /www/readonly/

sudo mount -o remount,ro /www/readonly/

mount

上述命令中sudo mount --bind /readonly/ /www/readonly/命令的意思是把/readonly/目录挂载到/www/readonly/目录下。

sudo mount -o remount,ro /www/readonly/命令的意思是挂载/www/readonly/为只读权限。

通过上图,我们可以很明显的看到/readonly/已经挂载到了/www/readonly/下,并且是只读挂载的。

注意:mount --bind命令的只读挂载与读写挂载是不同的。

以上命令在服务器重启后是不会自动执行的,如果要使上述命令自动进行挂载,我们可以把上述命令放在/ etc/rc.local文件中,而只读挂载命令不能放在/etc/fstab文件中。

经过多次测试只读挂载放在/etc/fstab文件中vsftpd用户还具有写入权限,所以只能放在/etc/rc.local文件中。

放在/etc/rc.local文件中,形式如下:

sudo vi /etc/rc.local

mount --bind /readonly/ /www/readonly/

mount -o remount,ro /www/readonly/

以上全部挂载完毕后,我们现在开始测试相关权限。

三、测试

现在开始测试vsftpd对各个目录的权限,下面开始对读写和只读权限分别进行测试。

3.1 测试读写权限

使用FlashFXP连接vsftpd服务器,如下:

随便上传一个文件到write目录,如下:

通过上图,我们可以很明显的看出。我们现在上传了一个ks.cfg文件到write目录下了。

现在我们在登陆vsftpd服务器切换到/write目录下,看看刚刚上传的文件ks.cfg是否在此目录下。如下:

通过上图,我们可以很明显的看出刚刚上传的文件ks.cfg已经在/write目录下了,说明写入权限是没有问题的。

3.2 测试只读权限

现在来测试只读权限,现在我们还是上传刚刚那个文件ks.cfg到readonly目录下。如下:

通过上图,我们可以很明显的看出刚刚上传的文件ks.cfg无法上传到readonly目录,FlashFXP提示553错误,说明只读权限是没有问题的。

到此有关vsftpd单用户多目录的配置到此结束。

烂泥:vsftpd单用户多目录配置的更多相关文章

  1. ubuntu server vsftpd 虚拟用户及目录

    ubuntu server vsftpd 虚拟用户及目录 一:需求场景: 在ubuntu server上开设一个虚拟网站,在网站目录建立一个ftp目录,允许用户通过ftp上传网站文件到网站目录: 同时 ...

  2. hive单用户多点模式配置

    简介 单用户多点模式也称远程服务模式,用户非java客户端访问元数据库,在服务端启动MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库. mysq ...

  3. ahjesus配置vsftpd虚拟用户在Ubuntu

    网上搜索了很多资料,过时,不全,货不对版 已下步骤亲测有效,不包含匿名用户登录 1.新建/home/loguser.txt 并填充内容,格式如下 用户名密码用户名密码用户名密码 2.生成db文件用于用 ...

  4. centos7: vsftpd安装及启动: ftp配置(以虚拟用户为例)

    centos7: vsftpd安装及启动: ftp配置 1安装: yum -y install vsftpd /bin/systemctl start vsftpd.service #启动 /bin/ ...

  5. 在wdcp环境下架设VSFTPD虚拟用户只上传功能服务器

    检查系统是否已安装vsftp rpm -q vsftpd package vsftpd is not installed #说明系统没有安装vsftpd 如果生成虚拟用户数据文件的时候出现以下错误 u ...

  6. Linux怎样创建FTP服务器--修改用户默认目录

    在创建FTP服务器之有先命令: ps -ef |grep vsftpd 查一下系统有没有安装vsftpd这个服务器,如果出现如下图所示的界面说明没有安装.     然后再执行:yum install ...

  7. Linux怎样创建FTP服务器--修改用户默认目录-完美解决 - 费元星

    在创建FTP服务器之有先命令: ps -ef |grep vsftpd 查一下系统有没有安装vsftpd这个服务器,如果出现如下图所示的界面说明没有安装.   然后再执行:yum install vs ...

  8. SpringSecurity 3.2入门(3)单用户登录

    1.增加web.xml文件配置如下 <!-- 获取Spring Security session的生命周期,这个监听器会在 session 创建和销毁的时候通知 Spring Security ...

  9. 烂泥:ubuntu下vsftpd虚拟用户配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可 ...

随机推荐

  1. ThinkPHP项目整合UCenter(一)

    一.准备文件 UCenter_1.6.0_SC_UTF8  二.项目文件位置 a. UCenter_1.6.0_SC_UTF8\upload\ 下 所有文件 复制到项目根目录,并安装UCenter b ...

  2. 第 29 章 CSS3 弹性伸缩布局[中]

    学习要点: 1.混合过度版 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS3 提供的用来实现未来响应式弹性伸缩布局方案,这里做一个初步的了解. 一.混合过渡版 混合版本的 Flexbox 模型 ...

  3. 新手编辑c语言的注意事项

    一般情况下新手都会犯的错误 1,注意在c语言中的大小写是有区别的,但在windows系统中默认没有差别,但是有时候也会出现bug. 2.在编程的时候注意定义你所使用的变量 3,每行代码的结尾注意要有分 ...

  4. 研究base64_encode的算法

    从网上看了一些资料,为了方便自己理解,于是把它的编码原理,自己放在excel表格中清晰列出来,方便以后查阅.做的图如下:

  5. org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread---------程序报错

    今天遇到了这个问题: org.hibernate.NonUniqueObjectException: a different object with the same identifier value ...

  6. LBS数据分析:使用地图展示统计数据——麻点图与麻数图

    作为一个LBS的APP,都获得了用户经纬度,也都使用了友盟统计.google ana等等统计分析系统,不过没有地图展示功能,不能进行直观的展示. 友盟统计.google ana等系统是总体数据统计,无 ...

  7. [deviceone开发]-HeaderView和FooterView的示例

    一.简介 这个是利用do_ListView组件实现下拉和上拉刷新功能的例子,除了do_ListView,其它比如do_Webview,do_ScrollView都有这个个功能.对应的BBS里的帖子详细 ...

  8. 【移动适配】一个像素的border怎么实现

    一个像素里复杂纷扰的世界 文 | 啃先生 Mar.3rd.2016  首发于微信公众号(啃先生) 上一篇发了<[移动适配]移动Web怎么做屏幕适配> 壹 | Fisrt 在CSS的世界里P ...

  9. 简单粗爆的解决同时布CRM引起的死锁问题

    和同事一起发布CRM引起CRM死锁,当然可以重启SQL Server不过有更简单的方法,直接执行下面的语句即可 sp_lock kill 58

  10. [javascript svg fill stroke stroke-width x1 y1 x2 y2 line stroke-opacity fill-opacity 属性讲解] svg fill stroke stroke-width stroke-opacity fill-opacity line绘制线条属性讲解

    <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...