烂泥:vsftpd单用户多目录配置

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

想要得到更多的文章,能够关注个人微信ilanniweb。web

1、实际问题ubuntu

在使用vsftpd过程当中,咱们会常常发现vsftpd在默认状况下一个用户(不管是系统用户仍是虚拟用户)只能拥有一个目录,通常是根目录。centos

若是此时再要向该用户添加其它目录的话,好比系统的其余目录也须要此用户访问,那么就没法直接添加了。服务器

vsftpd不像FileZilla_Server等相似的ftp服务器软件同样能够直接给用户添加多目录,以下:微信

clip_image002

因此咱们只能借助其余方式实现这个功能,在此咱们使用的是mount --bind命令。测试

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

2、解决方法

要想把vsftpd一个用户添加多个目录的话,咱们能够经过mount --bind命令来达到要求。.net

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

有关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

以上所有挂载完毕后,咱们如今开始测试相关权限。

3、测试

如今开始测试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单用户多目录的配置到此结束。

相关文章
相关标签/搜索