vsftpd切换目录之—chroot_local_user与chroot_list_enable详解 作者: sysit 分类: d 发表于 2017-09-23 208人围观 ## 1. 为什么需要例外 > 在使用vsftpd中,我们希望将我们的虚拟用户限制在服务guest_username所在主目录下。比如在《[CentOS7.x安装vsftpd](http://sysit.cn/?p=39 "CentOS7.x安装vsftpd")》文档中,所有的虚拟用户的主目录均限制在ftp用户所在的/data/ftp目录下。 以上是我们期望的vsftpd的结果。但是恰好就有“例外”,比如这个时候,有一个www虚拟用户,期望将代码上传到/var/www/html下(当然,这里只是打个比方,实际生产环境中不允许这么干。),这就需要用到chroot_local_user,chroot_list_enable,chroot_list_file这三个选项了。以下是对三个配置项的解释: * chroot_local_user > 是否将所有用户限制在主目录,YES为启用,NO禁用。(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到主目录之外的。) * chroot_list_enable > 是否启动限制用户的名单。YES为启用 ,NO禁用。(包括注释掉也为禁用) * chroot_list_file=/etc/vsftpd/chroot_list > 是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。 ## 2. 关于“例外” > 需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO) | | chroot_local_user=YES | chroot_local_user=NO | | :------------ | :------------ | :------------ | | chroot_list_enable=YES | 1.所有用户都被限制在其主目录下2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制 | 1.所有用户都不被限制其主目录下2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制 | | chroot_list_enable=NO | 1.所有用户都被限制在其主目录下2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 | 1.所有用户都不被限制其主目录下2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 | ## 3. 解决上述问题 现在我们来解决上述的问题。 首先编辑vsftpd.conf文件 ```shell # vi /etc/vsftpd/vsftpd.conf chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list ``` 编辑chroot_list ```shell vi /etc/vsftpd/chroot_list www ``` > chroot_list中每一行一个“例外”用户,不允许空格,也不允许空行。 配置用户目录 ```shell # vi /etc/vsftpd/vconf/www write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/var/www/html ``` 如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作! 赞赏支持