配置vsftpd的遇到的坑及搭建虚拟账户

配置vsftpd的遇到的坑及搭建虚拟账户

vsftpd是Very secure FTP 的简写,是一款非常安全的FTP软件。支持IPV6及SSL加密。

vsftpd特性:

  • 安全,高速,稳定
  • 基于IP的虚拟FTP服务器
  • 支持虚拟用户
  • 支持PAM或者xinetd/tcp_wrappers的认证方式
  • 支持每个虚拟用户具有独立的配置
  • 支持带宽限制

常见的报错及解决方法

  • 开启了anon_upload_enable=YES匿名用户可以上传文档,为什么总是还是提示553 Could not create file.不能上传文档?

解决方法:权限控制是基于vsftpd的配置文件和Linux的文件目录权限两方面的交集。匿名用户默认是映射成ftp用户来登陆的,所以并不具有对属于root目录的写权限。所以在/var/ftp新建一个上传目录mkdir upload;setfacl -m u:ftp:rwt upload;或者直接setfacl -m u:ftp:rwx pub一般不建议这样。

  • 匿名用户不可以删除自己上传的文档怎么办:

在配置文档里添加:anon_other_write_enable=YES

  • 重启或者重新加载时报错:Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.

配置文件中:listen_ipv6=YESlisten=YES这两个不能同时开启,只能开启其中一个。详情看配置文件上有解释。

  • 开启chroot_local_user=YES后使用本地用户访问,报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

这是由于vsftpd更新后加强了安全检查。如果某用户被限制在其家目录下,那么该用户的家目录不能再具有写权限,否则会报错。vsftpd-3.0(Centos7)才具有这种特性。vsftpd-2.2(Centos6)并不具有该属性。 解决办法:可以在主配置文件里添加allow_writeable_chroot=YES(推荐) 或者直接修改该用户的家目录chmod a-w /home/USER(修改后会带来相关的权限限制)

  • 详细说明chroot的相关选项:

chroot_local_user=YES|NO

chroot_list_enable=YES|NO

chroot_list_file=/etc/vsftpd/chroot_list

该选项的作用是禁锢ftp的本地用户于家目录之中。 但是限制和不限制哪些用户是相对于chroot\_local_user是否开启而言的。chroot_local_user和chroot_list_enable总是背道而驰。

方式一: chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

该方式表明/etc/vsftpd/chroot_list列表里的所有账号都被不会被限制在其家目录里面。列表以外的用户都被限制。

方式二: chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

该方式表明/etc/vsftpd/chroot_list列表里的所有用户都被限制在其家目录里面,但是该列表以外的用户都不被限制在它们的家目录里面。详细理解自己试验。

配置虚拟账号的方法(Centos7):

使用文件来储存虚拟账户:

  1. 安装db4-utils工具来创建数据库文件

    # yum -y install libdb-utils
    
    #奇数行为账号,偶数行为上面一个账号的密码
    # vim /etc/vsftpd/virtual_user
    tom
    12345
    jerry
    67890
    # db_load -T -t hash -f /etc/vsftpd/virtual_user /etc/vsftpd/virtual_user.db
  2. 创建pam文件,设置基于虚拟用户验证
    # vim /etc/pam.d/vsftpd.pam 
    auth required /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtual_user
    account required /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtual_user
  3. 设置虚拟账户及共享目录
    # useradd -s /sbin/nologin -d /home/ftp virtual
  4. 修改主配置文件(只需添加或修改列出的内容其他的不用修改)
    # vim /etc/vsftpd/vsftpd.conf
    anonymous_enable=NO
    pam_service_name=vsftpd.pam
    userlist_enable=YES
    tcp_wrappers=YES
    guest_enable=YES
    guest_username=virtual
    allow_writeable_chroot=YES
    ser_config_dir=/etc/vsftpd/virtual_user_conf
    user_sub_token=$USER
  5. 为每个账号设置单独的路径和权限:
    # mkdir /etc/vsftpd/virtual_user_conf
    # touch /etc/vsftpd/virtual_user_conf/{tom,jerry}
    
    #设置tom只能上传文档
    # vim /etc/vsftpd/virtual_user_conf/tom 
    local_root=/home/ftp/$USER
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    anon_upload_enable=YES
    
    #设置Jerry可以上传,下载和删除文件
    # vim /etc/vsftpd/virtual_user_conf/jerry 
    local_root=/home/ftp/$USER
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_upload_enable=YES
    
    #修改权限
    # mkdir /home/ftp/{tom,jerry}
    # chown virtual:virtual tom/
    # chown virtual:virtual jerry/
  6. 重启服务并验证
    # systemctl restart vsftpd

经过验证确实可行。由于篇幅有限我就不把实验验证结果贴出来了。本过程还可以做限制得更严格,比如:带宽,并发量等,自行添加。这里可以使用一款开源的客户端FTP软件FileZilla可以点击下载。

时间: 2024-08-06 02:45:40

配置vsftpd的遇到的坑及搭建虚拟账户的相关文章

linux上安装配置vsftpd(转)

转自:http://www.webarch.org/category/linux 我的生产环境是Centos5.6,由于需要提供ftp服务,就找了一款比较小巧的ftp服务器端软件,vsftpd(vsftpd 的名字代表”very secure FTP daemon”, 安全是它的开发者 Chris Evans 考虑的首要问题之一.在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标.) 1.查看是否安装vsftp rpm -qa | grep vsftpd 如果出现vsftpd-2

搭建虚拟用户VSFTPD

1.首先安装vsftpd yum -y install vsftpd 2.安装db4-utils-* 这个是建立虚拟用户数据库文件 3.建立文本格式用户名/密码文件 vim /etc/vsftpd/vusers.list 文件中添加用户名和密码,第一行用户名,第二行密码 例如: vuser 123 4.使用db_load工具把刚才的vusers.list转化为DB数据文件 切换到用户列表目录 cd /etc/vsftpd 转化数据库文件 db_load -T -t hash -f vusers.

Ubuntu 配置vsftpd实现FTP服务器

0.vsftpd是啥玩意 都不知道安装了个啥东西,那就没意思了,所以先去了解下什么是vsftpd.vsftpd意思为"very secure FTP daemon(非常安全的FTP进程)",当然只有更安全没有最安全. 那它到底安全在哪里呢,主要体现在以下两点: 权限控制,vsftpd以一般用户登录,用户权限相对较小,对于系统就越安全,对于用户需要的系统级指令大部分被整合到vsftpd中了,用户不需要申请更高权限就足以完成绝大部分ftp指令:此外对于ftp本身内部的读写控制,vsftpd

windows中使用mysql配置my.ini时的坑

windows中安装mysql的一般步骤: mysql版本:5.7.16 1.解压 2.把解压的文件夹bin目录地址添加到环境变量PATH里面 3.在文件加中添加配置文件my.ini--配置内容后面说,坑的所在 3.cmd(管理员模式)cd到bin目录里,执行命令 mysqld -install mysql --default-file= my.ini的物理路径 (这句命令是添加mysql服务,并把my.ini设为配置文件) 4.第3步成功后,继续执行命令 mysqld --initialize

Centos6.7安装配置vsftpd虚拟用户

演示环境 系统:Linux CentOS 6.7 64位 账号:root 环境:无安装vsftpd 1.安装依赖软件 [[email protected] ~]# yum install pam* db4* -y 安装PAM(用于虚拟用户认证)和DB4(用于生成虚拟用户的用户名密码的db文件). 2.安装vsftpd [[email protected] ~]# yum install vsftpd   -y 设置vsftpd开机启动: [[email protected]]# chkconfi

cent os 6.5 配置vsftpd

1. 下载vsftpd: #yum –y install vsftpd 2. 关闭iptables 查看防火墙状态:/etc/init.d/iptables status 关闭:service iptables stop  或者 /etc/init.d/iptables stop 每次开机自动关闭: chkconfig --level 35 iptables off 3. 关闭SELinux, /usr/sbin/setenforce 0 #使SELinux工作模式变成permissive模式/

ahjesus配置vsftpd虚拟用户在Ubuntu

网上搜索了很多资料,过时,不全,货不对版 已下步骤亲测有效,不包含匿名用户登录 1.新建/home/loguser.txt 并填充内容,格式如下 用户名密码用户名密码用户名密码 2.生成db文件用于用户验证 执行db_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db 如果没有装db会提示你apt-get install,根据提示的内容输入命令安装后再次执行生成db 3.设置数据库文件的访问权限 chmod 600 /etc/vsf

ubuntu 12.04 配置vsftpd 服务,添加虚拟用户,ssl加密

1.对于12.04的vsftpd 有一些bug,推荐安装版本vsftpd_2.3.5-1ubuntu2ppa1_amd64.debapt-get install python-software-propertiesadd-apt-repository ppa:thefrontiergroup/vsftpdapt-get updateapt-get install vsftpd 2.配置虚拟用户,安装db5.1-util(对应系统版本即可)apt-get -y install db5.1-util

Ubuntu安装配置vsftpd

安装vsftpd 1 apt-get install vsftpd 配置vsftpd 1 vi /etc/vsftpd.conf 2 # 关闭匿名访问 3 anonymous_enable=NO 4 # 让本地系统账号可以访问 5 local_enable=YES 6 write_enable=YES 7 # 所有匿名上传的文件的所属用户将会被更改成chown_username 8 chown_uploads=YES 9 # 匿名上传文件所属用户名 10 chown_username=whoev