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

      

  • 相关阅读:
    jquery easy ui 学习 (8)basic treegrid
    jquery easy ui 学习 (7) TreeGrid Actions
    jquery easy ui 学习 (6) basic validatebox
    jquery easy ui 学习 (5) windowlayout
    jquery easy ui 学习 (4) window 打开之后 限制操纵后面元素属性
    提示“应用程序无法启动,因为应用程序的并行配置不正确”不能加载 System.Data.SQLite.dll
    visual studio 添加虚线的快捷键
    VS2010打开项目时,出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案
    visual studio 编译时 出现 Files 的值 乱码
    微信 连接被意外关闭
  • 原文地址:https://www.cnblogs.com/ssooking/p/6212864.html
Copyright © 2011-2022 走看看