Vsftpd文件传输服务(三种认证模式:匿名开放 、本地用户、虚拟用户)

转载http://blog.51cto.com/10316297/2130057

FTP协议有两种工作模式:

1. 主动模式: FTP服务器主动向客户端发起连接请求;

2. 被动模式: FTP服务器等待客户端发起连接请求(默认模式);

vsftpd的三种认证模式

1. 匿名开放模式:
它是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器;

2. 本地用户模式
它是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是若被恶意用户破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制服务器;

3. 虚拟用户模式
它是三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出的用户进行口令验证的账户信息,而这些账户信息在服务器系统上并不存在,仅供FTP服务器进行认证使用。

一、匿名开放模式

  1. 修改vsftpd.conf配置文件

......
anonymous_enable=YES //允许匿名访问模式
......
anon_upload_enable=YES //启用,允许匿名用户上传文件
anon_mkdir_write_enable=YES //启用,允许匿名用户创建目录
新增下面参数
anon_other_write_enable=YES //允许匿名用户修改目录名称或删除目录

  1. 启动服务

chkconfig vsftpd on
service vsftpd start

  1. 修改ftp目录权限
chown ftp:ftp /var/ftp/pub
chmod 777 /var/ftp/pub

 

二、本地用户模式 centos 7.4系统下

  1. 修改vsftpd.conf配置文件

......
anonymous_enable=NO //禁止匿名访问模式
local_enable=YES //允许本地用户模式
write_enable=YES //设置可写权限
local_umask=022 //本地用户创建文件的umask值
userlist_enable=YES //启动“禁止名单”,名单文件为ftpusers和user_list
userlist_deny=YES //开启用户作用名单文件功能

 

chroot_local_user=YES  //chroot_local_user 是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)

chroot_list_enable=YES  //chroot_list_enable #是否启动限制用户的名单 YES为启用  NO禁用(包括注释掉也为禁用)

chroot_list_file=/etc/vsftpd/chroot_list  //#是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,

local_root=/var/zxcfile  //本地用户登录目录

 

  1. 创建本地用户zxc

useradd -s /sbin/nologin zxc//创建用户
passwd zxc  //设置密码,输入两次


2、对主目录授权 (不然链接不了,命令提示符显示 错误:500 OOPS: cannot change directory:/home/xxx 500 OOPS: child died)

chown ftp:ftp /var/zxcfile

chmod 755 /var/zxcfile 

    vi   /etc/vsftpd/chroot_list   // 配置文件中chroot_list_enable=YES 和chroot_local_user=YES  那么不在chroot_list_file=/etc/vsftpd/chroot_list 文件中的用户表示锁定在该用户的主目录下,不能切换目录。

 

参考  https://blog.csdn.net/bluishglc/article/details/42398811

  1. 添加chroot_list文件   

 

让我们举个例子:
假设有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这时列出的是那些“不会被

  1. 重启服务

  systemctl restart vsftpd.service

5. 测试

三、虚拟用户模式

  1. 创建ftp用户数据库文件
cd /etc/vsftpd/       //进入目录

vim vuser //创建ftp用户数据库文件,奇数行为用户名,偶数行为密码 
test 
123123
tom
123123

  1. 对vuser文件进行加密转换为数据库文件
db_load -T -t hash -f vuser vuser.db        //转换为数据库文件
chmod 600 vuser.db      //修改权限不让其他用户查看
  1. 创建vsftpd服务程序用户存储文件的根目录以及虚拟用户映射的系统本地用户
useradd -d /opt/vuser -s /sbin/nologin vuser
  1. 建立用户支持虚拟用户的PAM认证模块文件
vim /etc/pam.d/vsftpd.vu

//添加以下两行数据
auth required pam_userdb.so db=/etc/vsftpd/vuser 
account required pam_userdb.so db=/etc/vsftpd/vuser

  1. 修改vsftpd服务程序的主配置文件
vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO //禁止匿名开放模式
local_enable=YES //允许本地用户
guest_enable=YES //开启虚拟用户
guest_username=vuser //指定虚拟用户为vuser
pam_service_name=vsftpd.vu //指定PAM文件

  1. 重启服务
service vsftpd restart

7. 测试

客户端使用虚拟账户tom进行登录,可以正常登录

 

 

 

一、如果你的ftp用户登陆目录默认的是不是在 /home/ftp下,出现了500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list
 

出错原因:用户没有变更根目录的权限。

ftp用户默认的根目录是/home/ftp,如果要切换登陆目录,需要给予权限

解决方案

1、打开/etc/vsftpd/vsftpd.conf,做如下配置:

 
chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

 

2、在/etc/vsftpd下新建chroot_list,加入登陆用户的名字

然后再到/etc/vsftpd目录下新建chroot_list 文件 并添加允许访问的用户
二、参考

https://www.jb51.net/article/94223.htm

https://blog.csdn.net/bluishglc/article/details/42273197

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置vsftpd允许本地用户访问虚拟用户上传的文件,可以按照以下步骤进行配置: 1. 确保已安装vsftpd: 如果尚未安装vsftpd,请使用以下命令在Ubuntu系统中进行安装: ``` sudo apt-get update sudo apt-get install vsftpd ``` 2. 配置vsftpd主配置文件: 打开`/etc/vsftpd.conf`文件,并进行以下配置更改: - 设置`anonymous_enable`为NO,禁用匿名用户登录: ``` anonymous_enable=NO ``` - 设置`local_enable`为YES,允许本地用户登录: ``` local_enable=YES ``` - 设置`write_enable`为YES,允许用户上传文件: ``` write_enable=YES ``` - 设置`chroot_local_user`为YES,将本地用户限制在其主目录中: ``` chroot_local_user=YES ``` - 添加或修改`user_config_dir`指令,指定虚拟用户的配置目录: ``` user_config_dir=/etc/vsftpd/vuser_conf ``` 3. 创建虚拟用户配置目录: 创建一个目录用于存放虚拟用户的配置文件: ``` sudo mkdir /etc/vsftpd/vuser_conf ``` 4. 创建虚拟用户配置文件: 在虚拟用户配置目录中创建一个以虚拟用户名命名的文件,例如`<username>`: ``` sudo nano /etc/vsftpd/vuser_conf/<username> ``` 在该文件中添加以下内容,替换`<username>`为虚拟用户名: ``` local_root=/path/to/upload/directory write_enable=YES ``` 将`/path/to/upload/directory`替换为虚拟用户上传文件的目录路径。 5. 重启vsftpd服务: 在对主配置文件和虚拟用户配置文件进行修改和创建后,需要重启vsftpd服务以使更改生效: ``` sudo service vsftpd restart ``` 现在,本地用户应该可以访问虚拟用户上传的文件了。请确保设置适当的权限和安全措施,以确保只有授权的用户可以访问文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值