vsftpd 配置:chroot_local_user与chroot_list_enable详解

本文详细介绍了vsftpd中chroot_local_user与chroot_list_enable配置项的作用及使用方法,并通过实例展示了如何灵活配置以达到不同的用户权限控制目的。
 

vsftpd 配置:chroot_local_user与chroot_list_enable详解

标签: vsftpdchroot_local_userchroot_list_enable
  24937人阅读  评论(5)  收藏  举报

很多情况下,我们希望限制ftp用户只能在其主目录下(root dir)下活动,不允许他们跳出主目录之外浏览服务器上的其他目录,这时候我就需要使用到chroot_local_user,chroot_list_enable,chroot_list_file这三个选项了。以下是对三个配置项的解释: 本文原文出处:http://blog.youkuaiyun.com/bluishglc/article/details/42398811 严禁任何形式的转载,否则将委托优快云官方维护权益!

  • 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时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!

 对于chroot_local_user与chroot_list_enable的组合效果,可以参考下表:

  
chroot_local_user=YESchroot_local_user=NO
chroot_list_enable=YES1.所有用户都被限制在其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制1.所有用户都不被限制其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制
chroot_list_enable=NO1.所有用户都被限制在其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户1.所有用户都不被限制其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户

让我们举个例子:

假设有ftp1, ftp2两个ftp用户, 计划让ftp1用户锁定在主目录下,不允许切换到其他目录, 但是允许ftp2用户自由切换目录,则可以分如下两种方式实现:

方式一:

令:
chroot_local_user=YES
chroot_list_enable=YES
/etc/vsftpd/chroot_list名单列表为:
ftp2
 
解释:chroot_local_user=YES将所有用户限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=YES,即全体用户都被“限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“不会被限制在主目录下”的用户。
 
方式二:

令:
chroot_local_user=NO
chroot_list_enable=YES
/etc/vsftpd/chroot_list名单列表为:
ftp1

解释:chroot_local_user=NO则所有用户不被限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=NO,即全体用户都“不被限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“会被限制在主目录下”的用户。


其他情况:


对于chroot_local_user和chroot_list_enable的组合还有这样两种情况:


chroot_local_user=YES
chroot_list_enable=NO

chroot_local_user=NO
chroot_list_enable=NO

当chroot_list_enable=NO时,就不再启用chroot_list_file,此时就是单纯的把全部用户限定或不限定在主目录下了!

补充:

  • 关于chroot_local_user的设置,通常我们倾向于:全局禁止跳出主目录,使用chroot_list添加例外!即:使用Case 1的设置!
  • 匿名用户默认的root是/var/ftp
FTP服务器用户一个只有上传和下载查看的权限,没有删除的权限。一个是全权限。根据这个以下是利用 FTP 实现 Windows 10 访问 Ubuntu 共享文件夹的详细分步方案: 一、Ubuntu 端:搭建 VSFTPD 服务器 1. 安装 VSFTPD 服务 打开 Ubuntu 终端,执行命令: sudo apt update # 更新软件源sudo apt install vsftpd # 安装VSFTPD 2. 创建 FTP 用户共享目录 创建 FTP 用户(如ftp_user): sudo useradd -m ftp_user # 创建用户并生成家目录sudo passwd ftp_user # 设置用户密码 创建共享目录并设置权限: mkdir -p /home/ftp_user/ftp_share # 创建共享目录sudo chown ftp_user:ftp_user /home/ftp_user/ftp_share # 赋予用户所有权sudo chmod 755 /home/ftp_user/ftp_share # 设置目录权限(保证可访问) 3. 配置 VSFTPD 服务 编辑配置文件/etc/vsftpd.conf: sudo nano /etc/vsftpd.conf 确保以下关键配置项(若被注释则取消注释,无则添加): local_enable=YES # 允许本地用户登录 write_enable=YES # 允许写操作(上传、修改文件) chroot_local_user=YES # 限制用户在自家目录(增强安全性) allow_writeable_chroot=YES # 配合chroot_local_user,允许写操作 local_umask=022   如果需要锁定一个共享目录,可以在文件末尾添加 local_root=/home/SIL_TEST/ ,将 /home/SIL_TEST/ 替换为实际的共享目录路径。 重启 VSFTPD 服务使配置生效: sudo systemctl restart vsftpd 设置服务开机自启(可选): sudo systemctl enable vsftpd 操作来实现的ftp服务器效果。能不能使用python脚本的方式来实现我的需求
最新发布
11-04
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值