zoukankan      html  css  js  c++  java
  • FTP实验

    一.安装

    sudo apt-get install vsftpd

    service vsftpd start 启动vsftpd服务 

    如果在不设置任何的情况下,可以以匿名的方式访问该ftp。

    这时候你可以试着访问下ftp://IP地 址。应该可以看到一个空白内容的ftp空间。

    二. 修改配置文件

    在安装好ftp会产生几个文件: 
    /etc/vsftpd.conf  主配置文件 
    /etc/ftpusers    指定哪些用户不能访问FTP服务器 
    /etc/vsftpd.user_list   文件中指定的用户是否可以访问ftp服务器(由vsftpd.conf文件中的userlist_deny的取值来决定) 

    vsftpd.chroot_list

    这几个文件就是整个ftp控制和禁止用户的权限配置。。。

    注:每次更改完配置文件(/etc/vsftpd.conf) 都要重新启动 服务,要不然更改后的配 置不生效。

    设置主配置文件

    修改之前最好先备份下这个文件:cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

    参数内容

    ################# 匿名权限控制 ###############
    anonymous_enable=YES  #是否启用匿名用户
    no_anon_password=YES  # 匿名用户 login 时不询问口令
    
    下面这四个主要语句控制这文件和文件夹的上传、下载、创建、删除和重命名。
    anon_upload_enable= ( yes/no) ; # 控制匿名用户对文件(非目录)上传权限。
    anon_world_readable_only= ( yes/no ); # 控制匿名用户对文件的下载权限
    anon_mkdir_write_enable= ( yes/no ); # 控制匿名用户对文件夹的创建权限
    anon_other_write_enable= ( yes/no ); # 控制匿名用户对文件和文件夹的删除和重命名
    注:匿名用户下载是使用的是 nobody 这个用户,所以相应的 O 这个位置要有 R 权限才能被下载。若想让匿名用户能上传和删除权限,必需设置
    
    write_enable=YES # 全局设置,是否容许写入(无论是匿名用户还是本地用户,若要启用上传权限的话,就要开启他)
    anon_root=(none) # 匿名用户主目录
    anon_max_rate =( 0 ) # 匿名用户速度限制
    anon_umask =( 077 ) # 匿名用户上传文件时有掩码 ( 若想让匿名用户上传的文件能直接被匿名下载,就这设置这里为 073)
    chown_uploads=YES # 所有匿名上传的文件的所属用户将会被更改成 chown_username
    chown_username=whoever # 匿名上传文件所属用户名
    
    
    ################# 本地用户权限控制 ###############
    write_enable=YES   # 可以上传 ( 全局控制 ) 删除,重命名
    local_umask=022    #本地用户上传文件的 umask
    userlist_enable=YES # 限制了这里的用户不能访问
    local_root       # 设置一个本地用户登录后进入到的目录
    user_config_dir    # 设置用户的单独配置文件,用哪个帐户登陆就用哪个帐户命名
    download_enable    # 限制用户的下载权限
    chown_uploads=YES   # 所有匿名上传的文件的所属用户将会被更改成 chown_username
    chown_username=whoever   # 匿名上传文件所属用户名
    chroot_list_enable=YES   # 如果启动这项功能,则所有列在 chroot_list_file 之中的使用者不能更改根目录
    chroot_list_file=/etc/vsftpd/chroot_list   # 指定限制的用户文件
    user_config_dir=   # 后面跟存放配置文件的目录。用来实现不同用户不同权限。
    # 在 vsftpd.conf 文件中加入这一句,在相应的目录里面,为每个用户创建自己的配置文件,用来实现不同的权限
    
    可以通过以下三条配置文件来控制用户切换目录。
    chroot_list_enable=YES/NO   # 设置是否启用 chroot_list_file 配置项指定的用户列表文件。
    # 如果启动这项功能,则所有列在 chroot_list_file 之中的使用者不能更改根目录 . 默认值为 yes 。
    chroot_list_file=/etc/vsftpd/chroot_list # 指出被锁定在自家目录中的用户的列表文件。
    chroot_list_enable=YES
    
    通过与 chroot_local_user=YES/NO 搭配能实现以下几种效果:
    1 、当 chroot_list_enable=YES , chroot_local_user=YES 时,在/etc/vsftpd.chroot_list 文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
    2 、当 chroot_list_enable=YES , chroot_local_user=NO 时,在/etc/vsftpd.chroot_list 文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
    3 、当 chroot_list_enable=NO , chroot_local_user=YES 时,所有的用户均不能切换到其他目录。
    4 、当 chroot_list_enable=NO , chroot_local_user=NO 时,所有的用户均可以切换到其他目录。
    

      

    我们对FTP进行设置,主要就是通过修改这些参数

    简单配置例子

    实现匿名用户上传、下载的功能

    anonymous_enable=yes  (允许匿名登陆)
    anon_upload_enable=yes (开放上传权限)
    anon_mkdir_write_enable=yes(可创建目录的权限  )
    anon_other_write_enable=yes   (开放用户写权限)
    anon_world_readable_only=YES(具有下载可读文件的权限)  
    

    注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限

    实现本地用户有上传、下载的权限

    local_enable=YES  允许本地用户登陆
    local_root=/var/local 指定本地用户的家目录
    

     

    阻止本地的某些用户访问FTP服务器(user_list)

     vi /etc/vsftpd.conf 添加如下内容
     local_enable=YES       允许本地用户登陆
     userlist_enable=YES 
     userlist_deny=YES    决定了/etc/vsftpd/user_list文件中的用户无法访问FTP服务器

    区别比较:

    ftpusers不受任何配制项的影响,它总是有效,该文件存放的是一个禁止访问FTP的用户列表。它是一个黑名单!

    通常为了安全考虑,管理员不希望一些拥有过大权限的帐号(比如root)登入FTP,以免通过该帐号从FTP上传或下载一些危险位置上的文件从而对系统造成损坏。

    而user_list则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单!

    所以ftpusers文件总是生效,user_list则取决于userlist_enable和userlist_deny两项配置。

    安全设置

    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           客户端连接端口号最大值
    max_clients=200             ftp的最大连接数
    max_per_ip=4               每ip的最大连接数
    listen_port=5555            从5555端口进行数据连接
    

    ps –xf |grep ftp  查看谁登陆了ftp,并杀死它的进程

     

    例子:

    sudo mkdir /home/vftp    #新建"/home/vftp目录作为用户主目录
    新建用户并设置密码
    sudo useradd -d /home/vftp -s /bin/bash 用户名
    sudo passwd 用户名      
    vi /etc/vsftpd.conf ,向文件中添加:
      userlist_deny=NO
      userlist_enable=YES           指定允许ftp登录的本地用户
      userlist_file=/etc/allowed_users    记录允许本地登录用户名的文件
      seccomp_sandbox=NO           该选项不配置可能导致530问题
      local_enable=YES            允许本地登录
      chroot_list_enable=YES         使用户不能离开主目录
      ascii_upload_enable=YES
      ascii_download_enable=YES       设定支持ASCII模式的上传和下载功能
    
    vi /etc/allowed_users        在/etc/allowed_users文件中添加允许ftp登录的用户
    vi /etc/ftpusers           不允许登录的用户名。若允许登录的用户名也在其中,则需要删除
    创建设置FTP目录权限
    chmod -R 755 /home/vftp
    chmod -R 777 /home/vftp/upload
    

      

      

    【案例 1 】建立基于虚拟用户的 FTP 服务器,并根据以下要求配置 FTP 服务器。
    ( 1 )配置 FTP 匿名用户的主目录为 /var/ftp/anon 。下载带宽限制为 100kB/s
    ( 2 )建立一个名为 abc ,口令为 xyz 的 FTP 账户。下载带宽限制为 500kB/s 。
    ( 3 )设置 FTP 服务器同时登录到 FTP 服务器的最大链接数为 100 ;每个 IP 最大链接数为 3 ;用户空闲时间超过限值为 5 分钟。

    mkdir /var/fpt/anon
    useradd abc
    passwd abc
    
    vim /etc/vsftpd.conf 主要内容如下 anonymous_enable=YES anon_root=/var/ftp/anon anon_max_rate=100 # Uncomment this to allow local users to log in. local_enable=YES local_max_rate=500 max_clients=100 max_per_ip=3 connect_timeout=300

     

     高级配置

    1 、只能上传。不能下载、删除、重命名。
    cmds_allowed =FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST
    2 、只能下载。不能上传、删除、重命名。 write_enable=NO
    3 、只能上传、删除、重命名。不能下载。 download_enable = NO
    4 、只能下载、删除、重命名。不能上传。
    cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,RNFR,RNTO,RETR,DELE,SIZE,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST
    

    参数解释

    cmds_allowed=ABOR,ACCT,APPE,CWD,CDUP,DELE,HELP,LIST,MODE,MDTM,MKD,NOOP,NLST,PASS,PASV,PORT,PWD,QUIT,REIN,RE
    TR,RMD,RNFR,RNTO,SITE,SIZE,STOR,STAT,STOU,STRU,SYST,TYPE,USER
    CWD - change working directory 更改目录
    DELE - delete a remote file 删除文件
    LIST - list remote files 列目录
    MKD - make a remote directory 新建文件夹
    NLST - name list of remote directory
    PWD - print working directory 显示当前工作目录
    RETR - retrieve a remote file 下载文件RMD - remove a remote directory 删除目录
    RNFR - rename from 重命名
    RNTO - rename to 重命名
    STOR - store a file on the remote host 上传文件
    # ABOR - abort a file transfer 取消文件传输
    # CWD - change working directory 更改目录
    # DELE - delete a remote file 删除文件
    # LIST - list remote files 列目录
    # MDTM - return the modification time of a file 返回文件的更新时间
    # MKD - make a remote directory 新建文件夹
    # NLST - name list of remote directory
    # PASS - send password
    # PASV - enter passive mode
    # PORT - open a data port 打开一个传输端口
    # PWD - print working directory 显示当前工作目录
    # QUIT - terminate the connection 退出
    # RETR - retrieve a remote file 下载文件
    # RMD - remove a remote directory
    # RNFR - rename from
    # RNTO - rename to
    # SITE - site-specific commands
    # SIZE - return the size of a file 返回文件大小
    # STOR - store a file on the remote host 上传文件
    # TYPE - set transfer type
    # USER - send username
    # less common commands:
    # ACCT* - send account information
    # APPE - append to a remote file
    # CDUP - CWD to the parent of the current directory
    # HELP - return help on using the server
    # MODE - set transfer mode
    # NOOP - do nothing
    # REIN* - reinitialize the connection
    # STAT - return server status
    # STOU - store a file uniquely
    # STRU - set file transfer structure
    # SYST - return system type
    

      

    相关文章

    http://www.linuxnote.org/vsftp-the-configuration-instructions.html

      

  • 相关阅读:
    【491】概率论与数理统计——宋浩 笔记
    【491】安装 keras_contrib 高级网络实现模块详细方法
    【490】Stanford POS tagger 实现及相关含义
    git中submodule子模块的添加、使用和删除
    IOS开发之----NSError错误信息
    一个基于SpringBoot + IView 的单体架构管理系统
    GPS经纬度坐标WGS84到东北天坐标系ENU的转换
    ubuntu循环登录问题解决
    固件错误Possible missing firmware解决办法
    crc校验
  • 原文地址:https://www.cnblogs.com/ssooking/p/6212864.html
Copyright © 2011-2022 走看看