zoukankan      html  css  js  c++  java
  • 烂泥:vsftpd单用户多目录配置

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

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

    一、实际问题

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

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

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

    clip_image002

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

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

    二、解决方法

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

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

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

    man mount

    clip_image003

    根据权限的不同,我们把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/

    clip_image004

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

    sudo mkdir /www/write

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

    clip_image005

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

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

    mount

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

    clip_image006

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

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

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

    sudo vi /etc/fstab

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

    clip_image007

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

    sudo vi /etc/rc.local

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

    clip_image008

    2.2 只读挂载

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

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

    sudo mkdir /readonly

    sudo chown wangxy:wangxy -R /readonly/

    clip_image009

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

    sudo mkdir /www/readonly

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

    clip_image010

    以上相关的目录创建完毕后,现在我们来通过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/为只读权限。

    clip_image011

    通过上图,我们可以很明显的看到/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/

    clip_image012

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

    三、测试

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

    3.1 测试读写权限

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

    clip_image013

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

    clip_image014

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

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

    clip_image015

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

    3.2 测试只读权限

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

    clip_image016

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

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

  • 相关阅读:
    tomcat 支持https
    linux环境下jdk 安装以及maven私服搭建
    消息中间间初识
    HDU 5527 Too Rich
    HDU 5534 Partial Tree
    HDU 5543 Pick The Sticks
    HDU 5542 The Battle of Chibi dp+树状数组
    CodeForces 842D Vitya and Strange Lesson
    Codeforces 858D Polycarp's phone book
    HDU 5489 Removed Interval
  • 原文地址:https://www.cnblogs.com/ilanni/p/4779416.html
Copyright © 2011-2022 走看看