热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Ubuntu系统中搭建vsftp服务器

1、安装vsftpd终端输入sudoapt-getinstallvsftpd安装之后会在/home/下建立一个ftp目录,访问下可以看到一个空白内容的ftp空间。默认设置下需要匿名用户不可以登录2、设置vsftpd.conf文件修改之前最好先备份这个文件:sudocp/etc/vsftpd.conf/etc/

1、安装vsftpd
  终端输入sudo apt-get install vsftpd
  安装之后会在/home/下建立一个ftp目录,访问下可以看到一个空白内容的ftp空间。
  默认设置下需要匿名用户不可以登录
2、设置 vsftpd.conf文件

  修改之前最好先备份这个文件:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old
    参数意义:
      Anonymous_enable=yes (允许匿名登陆)
      Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
      Local_umask=022 (FTP上本地的文件权限,默认是077)
      Connect_form_port_20=yes (启用FTP数据端口的数据连接)*
      Xferlog_enable=yes (激活上传和下传的日志)
      Xferlog_std_format=yes (使用标准的日志格式)
      Ftpd_banner=XXXXX (欢迎信息)
      Pam_service_name=vsftpd (验证方式)*
      Listen=yes (独立的VSFTPD服务器)*
功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项
    开启匿名FTP服务器上传权限:
      Anon_upload_enable=yes (匿名帐号开放上传权限)
      Anon_mkdir_write_enable=yes (匿名帐号可创建目录的同时可以在此目录中上传文件)
      Write_enable=yes (开放本地用户写的权限)
      Anon_other_write_enable=yes (匿名帐号可以有删除的权限)
Anon_world_readable_Only=no(开启匿名服务器下传的权限)
    普通用户FTP服务器的连接(独立服务器)配置:
      Local_enble=yes (本地帐户能够登陆)
      Write_enable=no (本地帐户登陆后无权删除和修改文件)
功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传
    用户登陆限制进其它的目录,只能进它的主目录:
      设置所有的本地用户都执行chroot
Chroot_local_user=yes (本地所有帐户都只能在自家目录)
      设置指定用户执行chroot
Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list
      注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可
    限制本地用户访问FTP:
      Userlist_enable=yes (用userlistlai 来限制用户访问)
      Userlist_deny=no (名单中的人不允许访问)
      Userlist_file=/指定文件存放的路径/ (文件放置的路径)
      注:开启userlist_enable=yes匿名帐号不能登陆
    安全选项
      Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
      Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
      Accept_timeout=60(秒) (将客户端空闲1分钟后断)
      Connect_timeout=60(秒) (中断1分钟后又重新连接)
      Local_max_rate=50000(bite) (本地用户传输率50K)
      Anon_max_rate=30000(bite) (匿名用户传输率30K)
      Pasv_min_port=50000 (将客户端的数据连接端口改在
      Pasv_max_port=60000 50000—60000之间)
      Max_clients=200 (FTP的最大连接数)
      Max_per_ip=4 (每IP的最大连接数)
      Listen_port=5555 (从5555端口进行数据连接)
    查看谁登陆了FTP,并杀死它的进程
      ps ?xf |grep ftp
      kill 进程号

3、配置本地组访问的FTP
   首先创建用户组 test和FTP的主目录
      groupadd test
      mkdir /tmp/test
   然后创建用户
      useradd -G test ?d /tmp/test ?M usr1
      注:G:用户所在的组
d:表示创建用户的自己目录的位置给予指定
M:不建立默认的自家目录,也就是说在/home下没有自己的目录
      useradd ?G test ?d /tmp/test ?M usr2
   接着改变文件夹的属主和权限
      chown usr1.test /tmp/test ----这表示把/tmp/test的属主定为usr1
      chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么权限都没有
这个实验的目的就是usr1有上传、删除和下载的权限,而usr2只有下载的权限没有上传和删除的权限
主配置文件vsftpd.conf要确定local_enable=yes、write_enable=yes、chroot_local_usr=yes这三个选项是有的哦!

4、配置独立FTP的服务器的非端口标准模式进行数据连接
   在VSFTPD_CONF中添加Listen_port=33333
5、配置单独的虚拟FTP,使用虚拟FTP用户,并使建立的四个帐户中有不同的权限
   (两个有读目录的权限,一个有浏览、上传、下载的权限,一个有浏览、下载、删除和改文件名的权限)
    1>配置网卡
      第一块网卡地址是10.2.3.4 掩码是255.255.0.0
         ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up
    2>写入/etc/sysconfig中(为了重起后IP地址不会丢失)
         cd /etc/sysconfig/network-scripts
         cp ifcfg-eth0 ifcfg-eth0:1
         vi ifcfg-eth0:1在其中修改内容如下
         DEVICE=eth0:1
BROADCAST=211.131.4.255
HWADDR=该网卡的MAC地址
IPADDR=211.131.4.253
NETMASK=255.255.255.0
NETWORK=211.131.4.0
         OnBOOT=yes
         TYPE=Ethernet
         wq退出
    3>进入vsftpd.conf所在的文件夹cp vsftpd.conf vsftpd2.conf
      修改vsftpd.conf添加以下信息
Listen_address=10.2.3.4
      修改vsftpd2.conf添加以下信息
Listen_address=211.131.4.253
         Ftpd_banner=this is a virtual ftp test
      到此虚拟的FTP服务器建立好了
    4>建立logins.txt
         vi /tmp/logins.txt
      添加入下信息:
longlei------------用户名
longlei------------密码
        zhangweibo
        zhangweibo
        jinhui
        jinhui
        lxp
        lxp
      格式:一个用户名,一个密码
    5>建立访问者的口令库文件,然后修改其权限
        db_load ?T ?t hash ?f /tmp/logins.txt /etc/vsftpd_login.db
    6>进如/etc/pam.d/中创建
      在中添加如下信息
        auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
        account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
    7>在/var/ftp/创建目录并改变其属性和它的属主
        useradd -d /var/ftp/test qiang
        chmod 700 /var/ftp/test
      在目录中添加test_file测试文件
    8>进入vsftpd2.conf修改其中的信息(可以是)
        Listen_yes
        Anonymous_enable=no
        Local_enable=yes
        Write_enable=no
Anon_upload_enable=no
Anon_mkdir_write_enable=no
Anon_other_write_enable=no
Chroot_local_user=yes
Guest_enable=yes----------起用虚拟用户
Guest_username=qiang------将虚拟用户映射为本地用户
        Listen_port=5555
        Max_client=10
        Max_per_ip=1
        Ftpd_banner=this is a virtual server and users
Pam_service_name=ftp.vu
注:在主配置文件中给的权限越低,在后面分用户管理的时候对用户的权限划分的空间就越大,因为主配置文件最高的限制服务先读主配置文件,然后再读用户的配置文件
      配置完成时候执行/etc/init.d/vsftpd restart重启ftp服务器即可
      到此虚拟USER就建好了
9>在VSFTPD_CONF所在的目录中创建virtaul文件目录,并在文件目录中创建以你用户名命名的配置文件
        Longlei zhangweibo jinhui lxp
      在longlei中添加:
Anon_world_readable_Only=no
      在lxp中添加
Anon_world_readable_Only=no
      这样此两个用户就有了浏览目录的权限了
      在jinhui中添加
Anon_world_readable_Only=no
        Write_enable=yes
Anon_upload_enable=yes
      此用户就有了上传、下载和浏览的权限
      在zhangweibo中添加
Anon_world_readable_Only=no
        Write_enable=yes
Anon_upload_enable=yes
Anon_other_write_enable=yes
      此用户就有了上传、下载、删除文件目录、修改文件名和浏览的权限
    10>修改vsftpd2.conf
加入user_config_dir=/vsftpd.conf所在的目录/virtual
      重起服务器就搞定了
    VSFTPD_CONF中的所有配置信息
        Anonymous_enable=yes (允许匿名登陆)
        Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
        Local_umask=022 (FTP上本地的文件权限,默认是077)
        Connect_form_port_20=yes (启用FTP数据端口的数据连接)*
        Xferlog_enable=yes (激活上传和下传的日志)
        Xferlog_std_format=yes (使用标准的日志格式)
        Ftpd_banner=XXXXX (欢迎信息)
        Pam_service_name=vsftpd (验证方式)*
        Listen=yes (独立的VSFTPD服务器)*
        Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
        Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)
Anon_world_readable_Only=no (放开匿名用户浏览权限)
        Ascii_upload_enable=yes (启用上传的ASCII传输方式)
Ascii_download_enable=yes (启用下载的ASCII传输方式)
Banner_file=/var/vsftpd_banner_file (用户连接后欢迎信息使用的是此文件中的相关信息)
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
        Accept_timeout=60(秒) (将客户端空闲1分钟后断)
        Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
        Pasv_min_port=50000 (将客户端的数据连接端口改在
        Pasv_max_port=60000 50000—60000之间)
        Max_clients=200 (FTP的最大连接数)
        Max_per_ip=4 (每IP的最大连接数)
        Listen_port=5555 (从5555端口进行数据连接)
        Local_enble=yes (本地帐户能够登陆)
        Write_enable=no (本地帐户登陆后无权删除和修改文件)
      这是一组
        Chroot_local_user=yes (本地所有帐户都只能在自家目录)
        Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list   (前提是chroot_local_user=no)
      这又是一组
        Userlist_enable=yes (在指定的文件中的用户不可以访问)
        Userlist_deny=yes
Userlist_file=/指定的路径/vsftpd.user_list
      又开始单的了
        Banner_fail=/路径/文件名 (连接失败时显示文件中的内容)
        Ls_recurse_enable=no
Async_abor_enable=yes
One_process_model=yes
        Listen_address=10.2.2.2 (将虚拟服务绑定到某端口)
        Guest_enable=yes (虚拟用户可以登陆)
        Guest_username=所设的用户名 (将虚拟用户映射为本地用户)
User_config_dir=/任意指定的路径/为用户策略自己所建的文件夹   (指定不同虚拟用户配置文件的路径)
      又是一组
        Chown_uploads=yes (改变上传文件的所有者为root)
        Chown_username=root
      又是一组
        Deny_email_enable=yes (是否允许禁止匿名用户使用某些邮件地址)
Banned_email_file=//任意指定的路径/xx/
      又是单的
        Pasv_enable=yes ( 服务器端用被动模式)
User_config_dir=/任意指定的路径//任意文件目录 (指定虚拟用户存放配置文件的路径)
      如需要使用本地用户登陆关闭来宾用户,必须设置如下命令:
        anonymous_enable=no
        guest_enable=no
        local_enable=yes
        write_enable=yes
        local_umask=022
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd.chroot_list (如没有则自己创建)   (在etc/vsftpd.chroot_list 填入需要登陆的本地用户名)

6、解决vsftpd的中文乱码问题
   先安装源中的vsfpd,然后把所有的功能都配置完后,再解决中文乱码问题
因为删除源的vsftpd后它的/init.d/vsftpd与/vsftpd.conf是不会删除的,可以为我们打好铺垫,不然你会发现很无奈的!如果 你是直接编译安装,附件给出会给出我的init.d/vsftpd与vsftpd.conf文件,把他们覆盖到/etc下吧!

   开始做编译的准备工作,准备编译环境需要的库包
       sudo apt-get build-dep vsftpd 
   这里使用先安装源里的vsftpd,然后卸载
       sudo apt-get install vsftpd
       apt-get remove vsftpd
   下载附件并解压包
       tar -zxvf vsftpd-2.0.6
       cd vsftpd-2.0.6
       sudo su :使用root用户开始编译
       make #编译命令,如果无错误出现,表示成功
       make install #安装
如果安装中出现找不到目录的话,就建立那个缺的目录就好了
基本上都会提示缺少/man8和/man5目录的,建立后在重新make install
   下边就来测试下效果修改配置文件,加入
       charset_filter_enable=YES #开启字符过滤
       charset_client=GB2312 #客户端字符设置为简体中文
   好了现在把服务开启测试下吧
       sudo /etc/init.d/vsftpd restart
在win下上传一个中文文件,看看效果吧,然后在把配置文件中关于字符的关掉,重起服务,在看吧


推荐阅读
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 64G iPad升级到iPadOS后,发现外置存储只能在苹果自带的文件app中显示,非官方app无法直接读取外置存储的内容。用户只能先使用自带文件app将文件复制到iPad上,再用程序读取。这种限制给用户带来了不便,而且操作过程中还存在拷贝不显示进度、容易失败、不能安全弹出等问题。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
author-avatar
Mr丶X8063_789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有