zoukankan      html  css  js  c++  java
  • ftp--vsftppureftpd

    FTP是File Transfer Protocol(文件传输协议),用于Internet上的控制文件的双向传输。
    现今常用在一个局域网内,如学校、公司等一个指定范围的区域。(因为太过于简单和不安全)
    
    //FTP的主要流程:
    就是用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
    参考资料: http://www.linuxidc.com/Linux/2013-05/84984.htm
    
    FTP服务器的登录方式:
    
    1. 匿名登录: anoymous
    2. 系统用户登录
    3. 虚拟用户登录
    
    传输方式:
    
    1.主动(PORT)方式: FTP服务器开放一个端口向客户端发出连接通知,服务器接收连接,建立一条命令链路。
    (客户端给服务器端的21端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的某个端口,你就从这里把东西给我吧,服务器知道后就会通 过另外一个数据端口把东西传给客户端) 2.被动(PASV)方式: 客户端连接FTP服务器,服务器接收连接,建立一条命令链路。
    (客户端给服务器端的21端口发命令说,我要 下载什么什么,服务器端知道后,就打开一个端口,然后告诉客户端,我已经打开了某某端口,你自己进去拿吧,于是客户端就从那个端口进去拿文件了)
    端口开放:
    在主动模式中,FTP的两个端口是相对固定的,如果命令端口是x的话,那数据端口就是x-1,也就是说默认情况下,命令端口是21,数据端口就 是20;你把命令端口改成了123,
    那么数据端口就是122。这样使用防火墙就很方便了,只要开通这两个端口就可以了。
    
    在被动模式中就麻烦了些,默认情况下命令端口是21,但是数据端口是随机的。
    

    一、安装pureftpd

    //这个软件比vsftp配置起来更加灵活和安全。
    
    /*官网是 http://www.pureftpd.org/project/pure-ftpd*/
    [root@localhost ~]# cd /usr/local/src/
    [root@localhost src]# wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.32.tar.bz2
    [root@localhost src]# tar jxf pure-ftpd-1.0.32.tar.bz2
    [root@localhost src]# cd pure-ftpd-1.0.32
    [root@localhost pure-ftpd-1.0.32]# ./configure 
    --prefix=/usr/local/pureftpd 
    --without-inetd 
    --with-altlog 
    --with-puredb 
    --with-throttling 
    --with-peruserlimits  
    --with-tls
    [root@localhost pure-ftpd-1.0.32]# make 
    [root@localhost pure-ftpd-1.0.32]# make install
    [root@localhost pure-ftpd-1.0.32]# cd configuration-file
    [root@localhost pure-ftpd-1.0.32]# mkdir -p /usr/local/pureftpd/etc/
    [root@localhost configuration-file]# cp pure-ftpd.conf    /usr/local/pureftpd/etc/pure-ftpd.conf
    [root@localhost configuration-file]# cp pure-config.pl    /usr/local/pureftpd/sbin/pure-config.pl
    [root@localhost configuration-file]# chmod 755    /usr/local/pureftpd/sbin/pure-config.pl
    [root@localhost configuration-file]# vim /usr/local/pureftpd/etc/pure-ftpd.conf
    //拷贝
    ChrootEveryone              yes
    BrokenClientsCompatibility  no
    MaxClientsNumber            50
    Daemonize                   yes
    MaxClientsPerIP             8
    VerboseLog                  no
    DisplayDotFiles             yes
    AnonymousOnly               no
    NoAnonymous                 no
    SyslogFacility              ftp
    DontResolve                 yes
    MaxIdleTime                 15
    PureDB                        /usr/local/pureftpd/etc/pureftpd.pdb
    LimitRecursion              3136 8
    AnonymousCanCreateDirs      no
    MaxLoad                     4
    AntiWarez                   yes
    Umask                       133:022
    MinUID                      100
    AllowUserFXP                no
    AllowAnonymousFXP           no
    ProhibitDotFilesWrite       no
    ProhibitDotFilesRead        no
    AutoRename                  no
    AnonymousCantUpload         no
    PIDFile                     /usr/local/pureftpd/var/run/pure-ftpd.pid
    MaxDiskUsage               99
    CustomerProof              yes
    
    //启动pureftpd
    [root@localhost ~]# /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
    
    //启动成功,会显示一行长长的以Running开头的信息
    
    //建立系统用户及它所属的目录
    [root@localhost ~]# mkdir /data/www/
    [root@localhost ~]# useradd www
    [root@localhost ~]# chown -R www:www /data/www/

    //建立虚拟用户,使其与系统用户关联起来

    ****因为如果用系统用户身份登录ftp服务器,则需要知道用户的用户名和密码,这样不安全。
    所以创建一个虚拟用户,映射到系统用户,进入ftp服务器。但并不具有系统用户的权限,只可以进入系统用户对应的目录*******
    [root@localhost
    ~]# /usr/local/pureftpd/bin/pure-pw useradd ftp_user1 -uwww -d /data/www/ //这里可将pure-pw这个命令做个别名 Password: Enter it again: [root@localhost ~]# /usr/local/pureftpd/bin/pure-pw mkdb //创建用户信息数据库文件 //再添加一个虚拟用户 [root@localhost ~]# /usr/local/pureftpd/bin/pure-pw useradd ftp_user2 -uwww -d /tmp [root@localhost ~]# /usr/local/pureftpd/bin/pure-pw mkdb //创建一个虚拟用户就要创建一个用户信息数据库文件 //列出当前的账号 [root@localhost ~]# /usr/local/pureftpd/bin/pure-pw list //删除账号 [root@localhost ~]# /usr/local/pureftpd/bin/pure-pw userdel ftp_user2

    编译时出现的错误!!!

    1.configure: error: OpenSSL headers not found.
    解决方法: --》
    
    yum install -y openssl-devel

    二、测试pureftpd

    //测试需要工具
    [root@localhost ~]# yum install -y lftp
    
    //测试
    [root@localhost ~]# touch /data/www/123.txt
    [root@localhost ~]# lftp ftp_user1@127.0.0.1
    口令:
    lftp ftp_user1@127.0.0.1:~> ls
    drwxr-xr-x    2 514        www              4096 Jun 12 11:14 .
    drwxr-xr-x    2 514        www              4096 Jun 12 11:14 ..
    -rw-r--r--    1 514        www                 0 Jun 12 11:14 123.txt
    
    //登陆后,使用 ls 命令可以列出当前目录都有什么文件。

    ====================我是分割线。================

     一、vsftpd

    //CentOS或者RedHat Linux上自带的ftp软件叫做vsftp
    1.安装源码包
    [root@localhost ~]# yum install -y vsftpd db4-utils 2.建立系统用户
    [root@localhost
    ~]# useradd -s /sbin/nologin virftp //建立虚拟账号相关联的系统账号 3.建立虚拟用户信息文件
    [root@localhost ~]# vim /etc/vsftpd/vsftpd_login //建立虚拟账户相关的文件 //加入 /*此文件单行为用户名, 双行为密码*/ test1 123456 test2 abcdef 4.修改文件权限
    [root@localhost
    ~]# chmod 600 /etc/vsftpd/vsftpd_login 5.生成库文件
    [root@localhost
    ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db //生成对应的库文件 6.建立装虚拟用户配置文件的文件夹
    [root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf //建立虚拟账号相关的目录以及配置文件 [root@localhost ~]# vim /etc/vsftpd/vsftpd_user_conf/test1 //创建用户test1对应的配置文件 //加入 local_root=/home/virftp/test1 anonymous_enable=NO write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO idle_session_timeout=600 data_connection_timeout=120 max_clients=10 max_per_ip=5 local_max_rate=50000 7.建立虚拟用户的ftp文件夹 [root@localhost ~]# mkdir -p /home/virftp/test1 //用户名test1的ftp文件夹 [root@localhost ~]# chown -R virftp:virftp /home/virftp
    8.将虚拟用户的文件配置到pam上
    [root@localhost
    ~]# vim /etc/pam.d/vsftpd //在开头添加两行,在这里配置存放账号密码的文件 /*如果Linux系统是64位的,改为/lib64/security/pam_userdb.so*/ auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login 9.修改vsftpd的配置文件
    [root@localhost
    ~]# vim /etc/vsftpd/vsftpd.conf //按要求修改 ... ... anonymous_enable=YES改为anonymous_enable=NO #anon_upload_enable=YES 改为 anon_upload_enable=NO #anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO #chroot_local_user=YES 将注释去掉 ... ... #文件最尾部加入 guest_enable=YES guest_username=virftp virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/vsftpd_user_conf
    10.启动服务 [root@localhost
    ~]# /etc/init.d/vsftpd start

    ****启动失败****
    如果同时有两个ftp在服务器上,检查是否21端口被占用

    **************

    二、测试vsftpd

    [root@localhost ~]# yum install -y lftp 
    [root@localhost ~]# cat /etc/vsftpd/vsftpd_login
    test1
    123456
    test2
    abcdef
    [root@localhost ~]# lftp test1@127.0.0.1
    口令:
    lftp test1@127.0.0.1:~> ls
    lftp test1@127.0.0.1:~> quit
    [root@localhost ~]# cd /home/virftp/test1
    [root@localhost ~]# touch 2.txt
    [root@localhost ~]# mkdir 123
    [root@localhost ~]# lftp test1@127.0.0.1
    口令:
    lftp test1@127.0.0.1:~> ls
    drwxr-xr-x    2 0        0            4096 Apr 16 13:39 123
    -rw-r--r--    1 0        0               0 Apr 16 13:39 2.txt

    配置vsftpd遇到的错误:

    lftp test1@127.0.0.1:~> ls          
    ls: 登录失败: 500 OOPS: bad bool value in config file for: anon_upload_enable
    
    -->  因为你的那个YES/NO 布尔值(bool value)后边加了一个空格,即:
          anon_upload_enable=NO空格
    
    查看/etc/vsftpd/vsftpd.conf 和 /etc/vsftpd/vsftpd_user_conf/test1 中
    anon_upload_enable=NO后有无空格 
    
    正确的格式应该是:
    anon_world_readable_only=NO(无空格)!!!!!!
    注意,NO后边的空格,要用退格键将其删除。
  • 相关阅读:
    C语言中链接影响程序的细节
    Object类的方法
    基于误差反向传播法的神经网络学习的全貌图
    Attention Scaling for Crowd Counting
    plt画图
    机器学习相关技巧
    数值微分
    Noip2017 Day2 T1 奶酪
    串(string)
    八皇后问题
  • 原文地址:https://www.cnblogs.com/frankielf0921/p/5396695.html
Copyright © 2011-2022 走看看