上一篇主要讲到了匿名用户和系统用户登录服务器的上传和下载等操作,这篇文章主要是讲解怎么限制用户的活动范围。
当匿名用户登录到ftp服务器,本身是不能切换根目录的,所以这里主要是对系统用户做限制。
实例:
不加以限制前:
lftp lutixia@192.168.0.103:~> cd /
cd 成功, 当前目录=/
lftp lutixia@192.168.0.103:/> ls
lrwxrwxrwx 1 0 0 7 May 17 11:50 bin -> usr/bin
dr-xr-xr-x 5 0 0 4096 May 17 12:00 boot
drwxr-xr-x 5 0 0 44 Aug 06 12:19 data
用户可以切换到服务器的根目录,这很不安全!
修改配置文件,添加以下参数:
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
对以上三个参数做个解释:
chroot_local_user=YES: 将所有用户限制在主目录(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户都可以逃出主目录,切换到根目录。)
chroot_list_enable=NO: 不启动限制用户的名单。YES为启用,NO禁用
chroot_list_file=/etc/vsftpd/chroot_list:当chroot_list_enable为YES才需要配置此文件,表示例外的用户。至于是限制名单还是排除名单,
需要参考chroot_local_user的值.
allow_writeable_chroot=YES:表示让家目录可写,具体的解释在下面。
结合起来使用:
当chroot_local_user=YES时,
chroot_list_enable
=YES时,表示当全部用户被锁定主目录时,而list表中的用户不受限制。
=NO时,表示不启动list表功能,也就是全部限制。
当chroot_local_user=NO时,
chroot_list_enable
=YES时,表示当全部用户不被锁定主目录时,而list表中的用户受限制。
=NO时,表示不启动list表功能,也就是全部不限制。
画图整理如下:
image故障解决:
通过系统用户登录到ftp服务器,执行ls,报错如下:
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
报错原因:
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,
则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报以上错误了。
解决办法:
解决办法有两种
一:去掉用户家目录的写权限:chmod a-w /home/lutixia
这种方法不建议,如果这样操作,那么用户家目录就没法创建,上传文件了。
二:就是添加上面的参数:allow_writeable_chroot=YES
获取文章更新,以及常用软件,可以关注公众号: 笨办法学linux
image
网友评论